0 0

这个查询怎么写!10

create table ic01 (ab01 int ,ac01 char,vMonth int,vMoney int );--部门,人员,月份,金额
insert into ic01 values (1,'a',201201,200);
insert into ic01 values (1,'a',201202,300);
insert into ic01 values (1,'a',201203,400);
insert into ic01 values (1,'b',201201,500);
insert into ic01 values (1,'b',201202,600);
现在想通过 ab01和 年度,查询出这一年每个人员的金额信息,如果某个月没有值,就补充为0
如:
1   a  201201 200
1   a  201202 300
。  。。。。。。
。。。。。。。。
1   a  201211  0
1   a  201212  0

各位大神,想不明白,怎么弄呢!
2012年8月23日 15:21

4个答案 按时间排序 按投票排序

0 0

定义月份表,oracle,pg支持with实现, 然后外联结,在case判断空值

2012年8月29日 11:16
0 0

给你个mysql的例子 数据量大了,如果数据量很大建议在应用里做

create table e(

     id int,
     name varchar(100),
     year int,
     month int,
     money int
);

insert into e values (1,'a',2012, 01,200); 
insert into e values (1,'a',2012, 02,300); 
insert into e values (1,'a',2012, 03,400); 
insert into e values (2,'b',2012, 01,500); 
insert into e values (2,'b',2012, 02,600); 

create table month(
     month int
);

insert into month values (1); 
insert into month values (2); 
insert into month values (3); 
insert into month values (4); 
insert into month values (5); 
insert into month values (6); 
insert into month values (7); 
insert into month values (8); 
insert into month values (9); 
insert into month values (10); 
insert into month values (11); 
insert into month values (12);

select id, name, month, max(money) from (
  select id, name, concat(2012, lpad(month, 2, '0')) as month , 0 as money from month,
    (select id, name from e where year=2012 group by id) tmp
  union 
  select id, name, concat(2012, lpad(e.month, 2, '0')) as month, money from e  where year=2012
) tmp group by id, name, month;

2012年8月23日 16:27
0 0

select b.ab01, b.ac01, b.vmonth, nvl(a.vmoney, 0)
  from t a
 right join (select ab01, ac01, vmonth
               from (select level + 201200 vmonth from dual connect by level <= 12),
                    (select distinct ac01,ab01 from t)) b
    on a.ab01 = b.ab01
   and a.ac01 = b.ac01
   and a.vmonth = b.vmonth
 order by b.ab01, b.ac01, b.vmonth


这个是oracle实现,如果你是其它数据库也可以类似操作

大体思路是:
1、通过select level + 201200 from dual connect by level <=12造一份一年的月份数据,如下:

LEVEL+201200
201201
201202
201203
201204
201205
201206
201207
201208
201209
201210
201211
201212


2、通过select distinct ac01,ab01 from t查询出表中的所有ab01,ac01字段,然后与上面查询出来的月份数据做笛卡尔积,形成部门,员工,月份全的数据,如下:
select ab01, ac01, vmonth
from (select level + 201200 vmonth from dual connect by level <= 12),
       (select distinct ac01,ab01 from t)
AB01 AC01 VMONTH
1 b 201201
1 a 201201
1 b 201202
1 a 201202
1 b 201203
1 a 201203
1 b 201204
1 a 201204
1 b 201205
1 a 201205
1 b 201206
1 a 201206
1 b 201207
1 a 201207
1 b 201208
1 a 201208
1 b 201209
1 a 201209
1 b 201210
1 a 201210
1 b 201211
1 a 201211
1 b 201212
1 a 201212

3、然后将上面查询出来的结果与原表作join操作即可

2012年8月23日 16:18
0 0

select   ac01 ,vMonth ,(case when (vMoney IS NULL )
             THEN '0'
              else  vMoney  
           END) 


from  ic01

2012年8月23日 15:37

相关推荐

    vb函数查询!!!!!!!!!!!!!!!!!!!!!!!!!!!

    在这个主题中,我们将深入探讨VB函数的使用、类型以及常见的函数示例。 1. **VB函数类型**: - **内置函数**:VB提供了许多内置函数,如`Sqr()`(平方根)、`Len()`(长度)、`Mid()`(提取子串)等,可以直接在...

    有关SQL模糊查询!!!

    有关SQL模糊查询 SQL模糊查询是数据库查询的一种重要方式,执行数据库查询时,有完整...这个函数可以将特殊字符转义,以便在查询语句中正确地使用它们。在使用模糊查询时,需要注意通配符的使用,以免查询结果不正确。

    sql查询生成器!!!!!

    在描述中提到的"BuildSQL.exe"可能是这个查询生成器的主要执行文件,用户运行此程序即可启动应用。"BuildSQL.exe.lnk"是Windows快捷方式文件,用于方便用户快速打开程序。"Demo"可能包含一些示例或教程,帮助用户...

    查询插件,支持模糊查询,忽略大小写,多个关键字

    在提供的文件"search.html"中,可能包含了关于这个查询插件的详细说明、使用示例或者API文档。通常,HTML文件用于展示网页内容,开发者或用户可以通过阅读这个文件来了解插件如何集成到项目中,以及如何使用它的各种...

    最新版本的关键词排名查询工具!!(附自己写的META标签生成器(HTML版))!

    在SEO(搜索引擎优化)领域,关键词排名查询工具和META标签生成器是两个至关重要的辅助工具。下面将详细解释这两个工具及其在IT行业的应用。 首先,关键词排名查询工具是SEO从业者用来跟踪和分析网站在搜索引擎中...

    写了一个模糊查询下拉框,请高手给点润色!或给点意见什么的,

    库如jQuery或Vue.js可以简化这一过程。 3. AJAX:异步数据获取的关键技术,用于在不刷新页面的情况下与服务器通信。 4. 后端处理:后端语言(如PHP、Python、Node.js等)处理模糊查询逻辑,返回匹配的数据。 三、...

    vb写的窗口句柄查询器,方便使用!

    这个VB编写的查询器可以帮助开发者轻松获取这些信息,提高他们的工作效率。 关于VB编程的一些关键知识点包括: 1. **控件与事件**:VB中的控件(如按钮、文本框等)都具有事件,当用户与控件交互时,相应的事件会...

    学生信息联系表工程,具有学生信息查询功能!C++编写

    这个工程的核心目标是提供一个高效、便捷的工具,用于存储和检索学生联系信息,这对于教育机构或个人进行学生管理非常有用。 首先,我们要了解C++语言的基础知识。C++是一种强大的、面向对象的编程语言,它继承了...

    TC2.0库函数查询!

    这个“TC2.0库函数查询!”资源可能是一个专门用于查询TC2.0库函数的工具,比如tcsearch.exe,这通常是一个可执行程序,用户可以通过它快速查找和理解TC2.0中的各种函数及其用法。 在TC2.0的库函数中,我们可以找到...

    HQL查询语言基础!

    例如,`from eg.cat as cat`表示查询名为`Cat`的实体的所有实例,`cat`是实体的一个别名,方便后续的查询操作。 2. **多表查询** - 多表查询可以通过`from`关键字同时指定多个实体,例如,`from eg.Cat, eg.Dog`或...

    常量表反查询工具

    这个工具可以反查宏名,也就是可以利用数值来查询相应的宏名,尤其在看易语言写源程序时,看到数值,可以通过数值找对应的宏名,方便理解,这个工具也可以用在其他编程工具上 还有特此声明:由于这个工具是用易语言...

    一个简单的SSH框架写的查询页面

    在这个查询页面中,Struts2的动作类很可能是用来接收前端的查询参数,执行相应的业务逻辑,然后返回结果到视图层。 Hibernate作为ORM(对象关系映射)工具,负责数据库操作。它将Java对象映射到数据库表,简化了...

    自己写的java成绩查询系统

    总结来说,这个“自己写的Java成绩查询系统”是一个结合了JavaBean数据封装、Swing和AWT GUI设计、JDBC数据库交互以及事件处理的综合项目。它展示了Java在桌面应用开发中的强大能力,同时也是一个学习和实践Java核心...

    用servlet+jsp写的分页和关键字查询

    在这个系统中,Servlet将接收前端(通常是JSP页面)发送的请求,如查询参数和分页信息,然后调用Service层的方法来处理这些请求。 Service层是业务逻辑层,它封装了数据库操作,确保与视图层(这里是JSP)和持久层...

    收藏各种PHP写的类!

    这个类使得开发人员能够更方便、高效地执行创建(Create)、读取(Read)、更新(Update)和删除(Delete)等基本数据库操作。 首先,让我们了解CRUD操作的基本概念。在数据库管理中,CRUD是四个基本操作的首字母...

    code-knight-bot:不要看这个!!!我不写Discord机器人!!!

    在"code-knight-bot-master"这个文件夹中,可能包含了这个项目的所有源代码,包括`index.js`(主入口文件)、配置文件(如`config.json`,用于存储 Discord 令牌和其他敏感信息)、以及可能的命令处理函数和其他辅助...

    使MySQL查询区分大小写.doc

    - 如果你不希望改变表的Collation,可以在查询时通过`COLLATE`关键字临时指定一个区分大小写的Collation。例如: ```sql SELECT * FROM case_test WHERE word LIKE 'F%' COLLATE latin1_bin; ``` - 这将只返回...

    PB写的一个SQL查询分析器

    这个“PB写的一个SQL查询分析器”可能是使用PowerBuilder开发的一款专门用于分析SQL查询性能的应用。 在SQL查询分析器中,有几个关键知识点: 1. **SQL语法解析**:分析器首先会解析SQL语句,检查语法是否正确,...

    简单的数据库查询系统窗口实现

    这个程序设计得简洁易用,让用户能够方便地执行SQL查询并查看结果。它涉及到两个主要技术:PyQt5和MySQL。 PyQt5是Python的一个库,用于创建图形用户界面(GUI)应用程序。它是Qt库的Python绑定,提供了丰富的UI...

Global site tag (gtag.js) - Google Analytics