Code Bye

SQL计算符合条件行数量,并分列显示,怎么做

例如原始表格是这样:
test
ID	dep		leixing	other
1	A		类型1	asdfs
2	A		类型1	fawef
3	B		类型2	aewf
4	B		类型3	fasdf
5	A		类型2	sf
6	A		类型3	af
7 	A		类型3	awef

想生成一张这样的表:

dep		l1		l2		l3
A		2		1		2
B		0		1		1

第一行:
第一列是原表的dep A,第二列是原表dep为A的记录中,leixing这一列是”类型1″的记录的数量。
同理第一行第三列是  原表dep为A的记录中,leixing这一列是”类型2″的记录的数量。
第二行:
第二行第二列,是原表dep为B的记录中,leixing这一列是”类型1″的记录的数量。
第二行第三列,是原表dep为B的记录中,leixing这一列是”类型2″的记录的数量。
有什么简单的方法吗?本人本人想了一个,是这样的,但是感觉很复杂。

with a as (select dep,leixing,count(*) as lxcount from test group by dep,leixing)
	select dep,sum( case leixing when "类型1" then lxcount else 0 end)l1,
		sum( case leixing when "类型2" then lxcount else 0 end)l2,
		sum( case leixing when "类型3" then lxcount else 0 end)l3
		from a group by dep
解决方案

20

select dep,sum(case type when 1 then 1 else 0 end) as T1, sum(case type when 2 then 1 else 0 end)as T2, sum(case type when 3 then 1 else 0 end)ass T3 from type group by dep;

20

select dep,sum( case leixing when "类型1" then 1 else 0 end)l1,
        sum( case leixing when "类型2" then 1 else 0 end)l2,
        sum( case leixing when "类型3" then 1 else 0 end)l3
        from a group by dep

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明SQL计算符合条件行数量,并分列显示,怎么做