数据表:
编号 设备名称 所在集团 使用单位 是否过期 类型 是否外送 计划时间
001 设备1 集团1 单位1 F A F 2011-7-1
002 设备2 集团1 单位2 F B F 2011-6-4
003 设备3 集团2 单位3 T C F 2011-5-3
004 设备4 集团1 单位1 F A T 2011-4-1我要得到这样的一组数据每个集团 的 每个单位 A类设备有多少 B类设备有多少 C类设备有多少 分组设计是多少 过期的多少 外送的多少就是要打印这样的一个表:单位数据 集团1______________ 集团2
———— A B C 合计________A B C 合计
单位1 6 0 7 13 ———— 1 1 0 2
单位2 3 1 2 6 ————2 0 1 3
请指教,谢谢
编号 设备名称 所在集团 使用单位 是否过期 类型 是否外送 计划时间
001 设备1 集团1 单位1 F A F 2011-7-1
002 设备2 集团1 单位2 F B F 2011-6-4
003 设备3 集团2 单位3 T C F 2011-5-3
004 设备4 集团1 单位1 F A T 2011-4-1我要得到这样的一组数据每个集团 的 每个单位 A类设备有多少 B类设备有多少 C类设备有多少 分组设计是多少 过期的多少 外送的多少就是要打印这样的一个表:单位数据 集团1______________ 集团2
———— A B C 合计________A B C 合计
单位1 6 0 7 13 ———— 1 1 0 2
单位2 3 1 2 6 ————2 0 1 3
请指教,谢谢
A/B/C分组用
sum(case when ... then 1 else 0 end)
..
..
..
group by 单位名称
该如何用一个sql语句实现呢
sum(case when ... then 1 else 0 end)
..
..
..
from
where 计划时间 < to_date('2011-08-01','yyyy-mm-dd')
group by 单位名称
sum(case when 类型='A' and 所在集团='集团1' then 1 else 0 end) "集团1--A类",
sum(case when 类型='A' and 所在集团='集团1' then 1 else 0 end) "集团1--B类",
sum(case when 类型='A' and 所在集团='集团1' then 1 else 0 end) "集团1--C类",
sum(case when 所在集团='集团1' then 1 else 0 end) "集团1合计",
sum(case when 类型='A' and 所在集团='集团2' then 1 else 0 end) "集团2--A类",
sum(case when 类型='A' and 所在集团='集团2' then 1 else 0 end) "集团2--B类",
sum(case when 类型='A' and 所在集团='集团2' then 1 else 0 end) "集团2--C类",
sum(case when 所在集团='集团2' then 1 else 0 end) "集团2合计"
from table_name
where 计划时间 < to_date('2011-08-01','yyyy-mm-dd')
group by 使用单位
order by 使用单位
(
select '001' seq,'设备1' sb_name,'集团1' jituan,'单位1' units,'F' guoqi,'A' sbtype,'F' waisong,'20110701' playdate FROM DUAL union all
select '002' seq,'设备2' sb_name,'集团1' jituan,'单位2' units,'F' guoqi,'B' sbtype,'F' waisong,'20110604' playdate FROM DUAL union all
select '003' seq,'设备3' sb_name,'集团2' jituan,'单位3' units,'T' guoqi,'C' sbtype,'F' waisong,'20110405' playdate FROM DUAL union all
select '004' seq,'设备4' sb_name,'集团1' jituan,'单位1' units,'F' guoqi,'A' sbtype,'T' waisong,'20110403' playdate FROM DUAL
)
SELECT
SEQ,SB_NAME,units,
SUM(DECODE(SBTYPE,'A',1)) sum_a,
sum(decode(sbtype,'B',1))sum_b,
sum(decode(sbtype,'C',1))sum_c,
sum(decode(GUOQI,'F',1))ok_f,
sum(decode(guoqi,'t',1))ok_t
FROM T
GROUP BY SEQ,UNITS,sb_name;