求SQL查询语句,表的列数据按照条件不同输出为不同的列,并统计个数。

例如:
表A
单位 类型
a 1
b 1
a 2
b 2
c 2
b 3
查询结果显示:

单位为a,类型为1的几个,类型为2的几个,类型为3的几个,3中类型总共有几个。
单位为b,类型为1的几个,类型为2的几个,类型为3的几个,3中类型总共有几个。
单位为c,类型为1的几个,类型为2的几个,类型为3的几个,3中类型总共有几个。
具体如下:
单位 类型数量 类型为1 类型为2 类型为3
a 2 1 1 0
b 3 1 1 1
c 1 0 1 0
有点复杂的查询,新手请教各路大神,越详细越好。祝福您身体健康,多金多福。分少,请包涵!

select distinct(单位),COUNT(单位) as 类型数量,
sum(case when  类型=1 then 1 else 0 end)  as 类型为1 ,
sum(case when 类型=2 then 1 else 0 end) as 类型为2,
sum(case when 类型=3 then 1 else 0 end) as 类型为3
from sh1
group by 单位

 

已测试,结果:


a2110
b3111
c1010

 


也祝福您身体健康,多金多福 ,快采纳,哈哈!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-15
select 单位,
SUM(case 类型 when '1' then 1 else 0 end) as 类型为1,
SUM(case 类型 when '2' then 1 else 0 end) as 类型为2,
SUM(case 类型 when '3' then 1 else 0 end) as 类型为3
from 表A GROUP BY 单位

相似回答