我有一张桌子如下。
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
答案 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