用于计算行级

时间:2016-03-01 11:23:51

标签: sql sql-server

我刚才说过使用SQL查询,并希望SQL中的一位专家可以帮助我解决这个难题。

主表格如下

Name    Col1  Col2  Col3  Col4  col5
-------------------------------------
John    T24   T24   T24   T97   J00
Tom     T24   J01    -      -     -
James   T24   L09    -    N78   T97
John    -     -     L56    -    T24

我正在寻找SQL查询语法以获得以下两个结果“结果表1”和“结果表2”

在第一个查询中,我正在寻找同一行中John出现T24或T97的次数。在第二个查询中,T24或T97在同一名称的整个列中出现了多少次。我已将下面的示例表显示为结果表1和结果表2

结果表1

Name   T24    T97     Sum of both
-------------------------------------
John   3       1       4
Tom    1       0       1
James  1       1       2

结果表2

Name  T24    T97     
----------------
John   2       0      
Tom    1       0    
James  1       1

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

试试这个

Select Name
     , sum( case Col1 when 'T24' then 1 else 0 end) +
       sum( case Col2 when 'T24' then 1 else 0 end) +
       sum( case Col2 when 'T24' then 1 else 0 end) +
       sum( case Col3 when 'T24' then 1 else 0 end) +
       sum( case Col4 when 'T24' then 1 else 0 end) as T24
     , sum( case Col1 when 'T97' then 1 else 0 end) +
       sum( case Col2 when 'T97' then 1 else 0 end) +
       sum( case Col2 when 'T97' then 1 else 0 end) +
       sum( case Col3 when 'T97' then 1 else 0 end) +
       sum( case Col4 when 'T97' then 1 else 0 end) as T97

     , sum( case Col1 when 'T24' then 1 else 0 end) +
       sum( case Col2 when 'T24' then 1 else 0 end) +
       sum( case Col2 when 'T24' then 1 else 0 end) +
       sum( case Col3 when 'T24' then 1 else 0 end) +
       sum( case Col4 when 'T24' then 1 else 0 end) +
       sum( case Col1 when 'T97' then 1 else 0 end) +
       sum( case Col2 when 'T97' then 1 else 0 end) +
       sum( case Col2 when 'T97' then 1 else 0 end) +
       sum( case Col3 when 'T97' then 1 else 0 end) +
       sum( case Col4 when 'T97' then 1 else 0 end) as SumOfBoth
from Table
group by Name

详细了解Case here