我需要一些有关 T-SQL 查询的帮助。我想计算具有特殊值(例如 >1)的字段。
假设我有一张像:
IGrp | Item | Value1 | Value2
#############################
A | I11 | 0.52 | 1.18
A | I12 | 1.30 | 0.54
A | I21 | 0.49 | 2.37
B | I22 | 2.16 | 1.12
B | I31 | 1.50 | 0.28
我想要这样的结果:
IGrp | V1High | V2High
######################
A | 1 | 2
B | 2 | 1
在我看来,这应该与这种表达方式一致
SELECT IGrp, COUNT(Value1>1) AS V1High, COUNT(Value2>1) AS V2High
FROM Tbl GROUP BY IGrp
但这在 T-SQL 中是不可能的,因为 Count() 不采用 bool 值。
那么它真的是使用
WHERE Value>1
进行多个查询的唯一可能方法吗?和 COUNT(*)
然后加入他们?或者是否有实现预期结果的技巧?提前致谢。
最佳答案
SELECT IGrp,
COUNT(CASE WHEN Value1 > 1 THEN 1 ELSE NULL END) AS V1High,
COUNT(CASE WHEN Value2 > 1 THEN 1 ELSE NULL END) AS V2High
FROM Tbl
GROUP BY IGrp
关于tsql - T-SQL 计算具有特定值的行(一个查询中的多个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3193795/