用于检索标记/总行的TSQL查询

Cal*_*iff 1 sql t-sql sql-server pivot sql-server-2008

我很难找到解决以下问题的方法.假设,有一个像这样的表

 COL1 FLAG 
 aaa  1
 aaa  0
 aaa  1
 bbb  0
Run Code Online (Sandbox Code Playgroud)

我需要编写一个查询来获得以下输出:

COL1_VALUE FLAGGED TOTAL
aaa        2       3
bbb        0       1
Run Code Online (Sandbox Code Playgroud)

其中FLAGGED列包含FLAG = 1的'aaa'行值的总数,TOTAL列是包含'aaa'的行总数,换句话说,查找包含'aaa'的行数相对于包含'aaa'的总行数.是否可以使用单个查询?(即不使用临时表等)

(MSSQL2008)

Mar*_*ith 5

SELECT COL1 AS COL1_VALUE,
       COUNT(CASE WHEN FLAG = 1 THEN 1 END) AS FLAGGED,
       COUNT(*) AS TOTAL
FROM YourTable
GROUP BY COL1 
Run Code Online (Sandbox Code Playgroud)