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处理请问各位能有什么方法吗?在这里现谢过了!
在线等答案

解决方案 »

  1.   

    SELECT COUNT(id) AS id数量,
           [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]
      

  2.   


    --> 测试数据: @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
      

  3.   

    logo为1数目 logo为2数目?顯示列是否不正確;
      

  4.   


    --楼主的测试数据有问题吧,那logo为2的明明是没有的嘛
      

  5.   

    顯示結果也數據不對應
    參照
    http://topic.csdn.net/u/20080614/17/22e73f33-f071-46dc-b9bf-321204b1656f.html
      

  6.   

    恩,是错了点,应该是LOGO为0的数量
      

  7.   

    where isnull( logo ,'' ) = ''
      

  8.   

    select  id数量=count(1),
    [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
    */