如何从位字段获取真/假计数到两个单独的列

avg*_*ody 38 t-sql sql-server bit sql-server-2008

我需要创建一个查询,它将True(1)和False(0)的数量从一个位字段分成两个独立的列.

我正在加入3个表,需要它是这样的:

属性| 班级| 通过| 失败

我将分组属性和类.

Mat*_*nes 70

像这样的东西:

SUM(CASE WHEN ColumnName = 1 THEN 1 ELSE 0 END) AS Pass, 
SUM(CASE WHEN ColumnName = 0 THEN 1 ELSE 0 END) AS Fail
Run Code Online (Sandbox Code Playgroud)


Ken*_*nic 12

这工作(至少在SQL 2008中)

SELECT SUM(Passed + 0) PASS , SUM(1 - Passed) FAIL
Run Code Online (Sandbox Code Playgroud)

我将第一个和中的0加到0作为从bit转换为int的简单方法,因为你不能直接对比特求和.

  • PostgreSQL 使用 `SUM(CAST(Passed as Integer)) PASS, SUM(1 - CAST(Passed AS Integer) FAIL`。 (2认同)