SQL Server
现有表如下:
id table logo
001 a 1
002 b 0
003 a null
004 b null
005 a 1现想得表如下查询:
id数量 table logo为1数目 logo为2数目
3 a 2 1
2 b 0 2
注:logo值为NULL时当0处理请问各位能有什么方法吗?在这里现谢过了!
在线等答案
现有表如下:
id table logo
001 a 1
002 b 0
003 a null
004 b null
005 a 1现想得表如下查询:
id数量 table logo为1数目 logo为2数目
3 a 2 1
2 b 0 2
注:logo值为NULL时当0处理请问各位能有什么方法吗?在这里现谢过了!
在线等答案
[table],
COUNT(CASE WHEN logo=1 THEN 1 END) logo为1的数量,
COUNT(CASE WHEN logo=2 THEN 1 END) logo为2的数量
FROM tb_name
GROUP BY [table]
--> 测试数据: @s
declare @s table (id varchar(3),[table] varchar(1),logo int)
insert into @s
select '001','a',1 union all
select '002','b',0 union all
select '003','a',null union all
select '004','b',null union all
select '005','a',1
select id数量=count(1),[table],logo为1数目=sum(case isnull(logo,0) when 1 then 1 else 0 end),logo为2数目=sum(case isnull(logo,0) when 2 then 1 else 0 end) from @s
group by [table]--结果:id数量 table logo为1数目 logo为2数目
----------- ----- ----------- -----------
3 a 2 0
2 b 0 0
--楼主的测试数据有问题吧,那logo为2的明明是没有的嘛
參照
http://topic.csdn.net/u/20080614/17/22e73f33-f071-46dc-b9bf-321204b1656f.html
[table],
logo为1数目=sum(case isnull(logo,0) when 1 then 1 else 0 end),
logo为0数目=sum(case isnull(logo,0) when 0 then 1 else 0 end)
from @t
group by [table]/*
id数量 table logo为1数目 logo为0数目
----------- ----- ----------- -----------
3 a 2 1
2 b 0 2
*/