-
这个查询怎么写!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个答案 按时间排序 按投票排序
-
给你个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
-
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
-
select ac01 ,vMonth ,(case when (vMoney IS NULL )
THEN '0'
else vMoney
END)
from ic012012年8月23日 15:37
相关推荐
在这个主题中,我们将深入探讨VB函数的使用、类型以及常见的函数示例。 1. **VB函数类型**: - **内置函数**:VB提供了许多内置函数,如`Sqr()`(平方根)、`Len()`(长度)、`Mid()`(提取子串)等,可以直接在...
有关SQL模糊查询 SQL模糊查询是数据库查询的一种重要方式,执行数据库查询时,有完整...这个函数可以将特殊字符转义,以便在查询语句中正确地使用它们。在使用模糊查询时,需要注意通配符的使用,以免查询结果不正确。
在描述中提到的"BuildSQL.exe"可能是这个查询生成器的主要执行文件,用户运行此程序即可启动应用。"BuildSQL.exe.lnk"是Windows快捷方式文件,用于方便用户快速打开程序。"Demo"可能包含一些示例或教程,帮助用户...
在提供的文件"search.html"中,可能包含了关于这个查询插件的详细说明、使用示例或者API文档。通常,HTML文件用于展示网页内容,开发者或用户可以通过阅读这个文件来了解插件如何集成到项目中,以及如何使用它的各种...
在SEO(搜索引擎优化)领域,关键词排名查询工具和META标签生成器是两个至关重要的辅助工具。下面将详细解释这两个工具及其在IT行业的应用。 首先,关键词排名查询工具是SEO从业者用来跟踪和分析网站在搜索引擎中...
库如jQuery或Vue.js可以简化这一过程。 3. AJAX:异步数据获取的关键技术,用于在不刷新页面的情况下与服务器通信。 4. 后端处理:后端语言(如PHP、Python、Node.js等)处理模糊查询逻辑,返回匹配的数据。 三、...
这个VB编写的查询器可以帮助开发者轻松获取这些信息,提高他们的工作效率。 关于VB编程的一些关键知识点包括: 1. **控件与事件**:VB中的控件(如按钮、文本框等)都具有事件,当用户与控件交互时,相应的事件会...
这个工程的核心目标是提供一个高效、便捷的工具,用于存储和检索学生联系信息,这对于教育机构或个人进行学生管理非常有用。 首先,我们要了解C++语言的基础知识。C++是一种强大的、面向对象的编程语言,它继承了...
这个“TC2.0库函数查询!”资源可能是一个专门用于查询TC2.0库函数的工具,比如tcsearch.exe,这通常是一个可执行程序,用户可以通过它快速查找和理解TC2.0中的各种函数及其用法。 在TC2.0的库函数中,我们可以找到...
例如,`from eg.cat as cat`表示查询名为`Cat`的实体的所有实例,`cat`是实体的一个别名,方便后续的查询操作。 2. **多表查询** - 多表查询可以通过`from`关键字同时指定多个实体,例如,`from eg.Cat, eg.Dog`或...
这个工具可以反查宏名,也就是可以利用数值来查询相应的宏名,尤其在看易语言写源程序时,看到数值,可以通过数值找对应的宏名,方便理解,这个工具也可以用在其他编程工具上 还有特此声明:由于这个工具是用易语言...
在这个查询页面中,Struts2的动作类很可能是用来接收前端的查询参数,执行相应的业务逻辑,然后返回结果到视图层。 Hibernate作为ORM(对象关系映射)工具,负责数据库操作。它将Java对象映射到数据库表,简化了...
总结来说,这个“自己写的Java成绩查询系统”是一个结合了JavaBean数据封装、Swing和AWT GUI设计、JDBC数据库交互以及事件处理的综合项目。它展示了Java在桌面应用开发中的强大能力,同时也是一个学习和实践Java核心...
在这个系统中,Servlet将接收前端(通常是JSP页面)发送的请求,如查询参数和分页信息,然后调用Service层的方法来处理这些请求。 Service层是业务逻辑层,它封装了数据库操作,确保与视图层(这里是JSP)和持久层...
这个类使得开发人员能够更方便、高效地执行创建(Create)、读取(Read)、更新(Update)和删除(Delete)等基本数据库操作。 首先,让我们了解CRUD操作的基本概念。在数据库管理中,CRUD是四个基本操作的首字母...
在"code-knight-bot-master"这个文件夹中,可能包含了这个项目的所有源代码,包括`index.js`(主入口文件)、配置文件(如`config.json`,用于存储 Discord 令牌和其他敏感信息)、以及可能的命令处理函数和其他辅助...
- 如果你不希望改变表的Collation,可以在查询时通过`COLLATE`关键字临时指定一个区分大小写的Collation。例如: ```sql SELECT * FROM case_test WHERE word LIKE 'F%' COLLATE latin1_bin; ``` - 这将只返回...
这个“PB写的一个SQL查询分析器”可能是使用PowerBuilder开发的一款专门用于分析SQL查询性能的应用。 在SQL查询分析器中,有几个关键知识点: 1. **SQL语法解析**:分析器首先会解析SQL语句,检查语法是否正确,...
这个程序设计得简洁易用,让用户能够方便地执行SQL查询并查看结果。它涉及到两个主要技术:PyQt5和MySQL。 PyQt5是Python的一个库,用于创建图形用户界面(GUI)应用程序。它是Qt库的Python绑定,提供了丰富的UI...