如何将SUM用于位列?

Bru*_*nha 26 sql t-sql sql-server aggregate-functions

如何在T-SQL中对位列使用函数SUM()?

当我尝试这样做时,如下所示:

SELECT SUM(bitColumn) FROM MyTable;
Run Code Online (Sandbox Code Playgroud)

我收到错误:

操作数数据类型位对于sum运算符无效.

Dev*_*art 44

SELECT SUM(CAST(bitColumn AS INT))
FROM dbo.MyTable
Run Code Online (Sandbox Code Playgroud)

需要投入数量

或其他解决方案 -

SELECT COUNT(*)
FROM dbo.MyTable
WHERE bitColumn = 1
Run Code Online (Sandbox Code Playgroud)

  • 我的查询实际上比我的问题上的例子复杂得多.bitColumn来自连接表,我的结果被分组.我不想停止返回bitColumn为False的结果.但解决方案1是完美的.很简单! (3认同)

t-c*_*.dk 14

您可以将0视为空值并简单地计算剩余值:

SELECT count(nullif(bitColumn, 0))
FROM MyTable;
Run Code Online (Sandbox Code Playgroud)


小智 13

SELECT SUM(bitColumn * 1) FROM dbo.MyTable
Run Code Online (Sandbox Code Playgroud)

将位转换为整数,通过乘法,干净简单

  • 这似乎是所有解决方案中最简单、最优雅的解决方案。 (2认同)

ped*_*ram 5

您可以使用来实现CONVERT

SELECT SUM(CONVERT(INT, bitColumn)) FROM MyTable
Run Code Online (Sandbox Code Playgroud)