Sql Query查找Counts

时间:2013-04-19 16:36:56

标签: sql-server sql-server-2008 tsql

我有一张桌子如下。

Id Product1 Product2 Product3
1     1      null     null
2     1       2       null
3     3       1       null
4     2       3        1  

现在我想编写一个查询来计算产品1的条目。 在上面的例子中,Product1为2,Product2为1,Product 3为1

我提出了类似的问题。

select
Count(Product1) +
Count(Product2) +
Count(Product3)
from  
Table 
where Product1  =  1

但它给我一个不准确的结果。 有没有办法可以获得每种产品的出现次数?

分组

所需的输出将是这样的:

ProductID Product1Count Product2Count Product3Count 
  1           2              1             1                    
  2           1              1             0
  3           1              1             0 

2 个答案:

答案 0 :(得分:3)

select Count(CASE WHEN Product1 = 1 THEN 1 END) +
       Count(CASE WHEN Product2 = 1 THEN 1 END) +
       Count(CASE WHEN Product3 = 1 THEN 1 END)
from   Table1 
where  1 IN (Product1, Product2, Product3)

添加此行的原因:where 1 IN (Product1, Product2, Product3)仅计算受影响的行,因此比运行所有记录更快。

答案 1 :(得分:2)

这样的事情会起作用:

SELECT
SUM(CASE WHEN Product1 = 1 THEN 1 ELSE 0 END)
+ SUM(CASE WHEN Product2 = 1 THEN 1 ELSE 0 END)
+ SUM(CASE WHEN Product3 = 1 THEN 1 ELSE 0 END)
FROM Table