tsql - T-SQL 计算具有特定值的行(一个查询中的多个)

标签 tsql count

我需要一些有关 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/

相关文章:

tsql - T-SQL 删除插入的记录

mysql - SQL中根据日期计算列数

javascript - 我怎样才能得到数组的真实计数?

sql - TSQL 批量插入

sql-server - 从 Excel 工作表将数据插入 SQL 表

SQL - 向结果集添加额外的行

sql - 创建 Sql 查询的设计模式

python - 如何计算列中的值

excel - 当命名 range1 中的所有值都等于 “N/A” VBA Application.WorksheetFunction 时,希望删除命名 range2

mysql - SELECT count(*) 比 SELECT count(*) 慢两倍,MySQL 中的 some_column