db2 select中使用case替代行转列操作
来源:互联网 发布:企业网络搭建 编辑:程序博客网 时间:2024/05/16 17:53
在DB2中进行行转列比较麻烦,这里我在select里用case语法代替行转列操作
BILL_HEADERS 为单据主表,一条记录代表一条单据,表结构如下
CHECK_UNIT varchar(120) 公司
BOE_DEPT_ID number(100) 部门
BOE_DATE timpstamp 提交时间
表中数据如下(例子)
NO 公司 部门 提交时间
1 深圳分公司 财务部 2007-7-20-12.00.00.000000
2 深圳分公司 财务部 2007-7-20-13.00.00.000000
3 深圳分公司 开发部 2007-7-20-13.06.00.000000
4 北京分公司 公关部 2007-9-20-13.00.00.000000
5 北京分公司 公关部 2007-10-20-13.00.00.000000
一个公司下有多个部门
现在查询各个公司下的每个部门在星期天到星期六的单据数,星期一到星期六的单据数分开统计,
要求查询结果结构如下
公司 部门 单据总数 星期天 星期一 星期二 星期三 星期四 星期五 星期六
深圳分公司 财务部 31 0 5 7 2 11 6 0
深圳分公司 开发部 46 0 7 23 7 3 5 1
深圳分公司 外贸部 9 0 1 3 3 1 1 0
珠海分公司 业务部 1 0 0 0 0 1 0 0
北京分公司 公关部 43 8 7 1 12 5 10 0
北京分公司 内务部 30 3 0 0 11 3 12 1
使用以下查询语句可以实现
select t.CHECK_UNIT as 公司,
t.BOE_DEPT_ID as 部门,
sum(t.total) as 单据总数,
sum(t.seven) as 星期天,
sum(t.one) as 星期一,
sum(t.two) as 星期二,
sum(t.three) as 星期三,
sum(t.four) as 星期四,
sum(t.five) as 星期五,
sum(t.six) as 星期六
from (select bh.CHECK_UNIT,
bh.BOE_DEPT_ID,
count(*) as total,
count(case
when (DAYOFWEEK(bh.BOE_DATE) = 1) then
1
end) as seven,
count(case
when (DAYOFWEEK(bh.BOE_DATE) = 2) then
1
end) as one,
count(case
when (DAYOFWEEK(bh.BOE_DATE) = 3) then
1
end) as two,
count(case
when (DAYOFWEEK(bh.BOE_DATE) = 4) then
1
end) as three,
count(case
when (DAYOFWEEK(bh.BOE_DATE) = 5) then
1
end) as four,
count(case
when (DAYOFWEEK(bh.BOE_DATE) = 6) then
1
end) as five,
count(case
when (DAYOFWEEK(bh.BOE_DATE) = 7) then
1
end) as six
from sie.SIE_BOE_HEADERS bh
where bh.BOE_DATE > TIMESTAMP('2007-7-20-12.00.00.000000')
group by bh.CHECK_UNIT, bh.BOE_DEPT_ID, DAYOFWEEK(bh.BOE_DATE)) t
group by t.CHECK_UNIT, t.BOE_DEPT_ID;
- db2 select中使用case替代行转列操作
- 用Hashtable替代select case
- select 中使用 case when 和 replace
- select中case when的使用
- DB2中的CASE使用
- DB2 使用Case语句
- excel 中如何使用函数替代case when 进行转换
- DB2中使用sum替代count的查询
- access中case替代方法
- access中case替代方法
- time.After 在select-case中使用的正确姿势
- access 中 case 的替代方法
- Access中替代case when的方法
- Python中使用.format方法替代格式化操作符%
- oracle:case 语句使用(用于select子句的case语句中可以使用in这个函数)
- 使用面向对象技术替代switch-case和if-else
- 使用CASE表达式替代SQL Server中的动态SQL
- 使用面向对象技术替代switch-case和if-else
- 百度之站长FAQ - 收录篇【二】
- .NET框架中的IComparable、IComparable、IComparer、IEqualityComparer
- 【转】不唐突的JavaScript的七条准则
- 集群概念
- 一个Java程序员应该掌握的10项技能
- db2 select中使用case替代行转列操作
- 字符串编码
- STL中: string、vector、list、deque、set、map 的区别
- DataGridView 增删改
- OPhone酝酿狙击iPhone 价格适中或刺激消费热情
- Are you kidding?(Then we could look at the production line.)
- iPhone程序连接到真机调试(注册了APP ID及购买了IDP开发者授权的前提下)
- ajax + web service交互架构
- VS2008中绑定VSS