Как я могу использовать столбцы SUM для бит?

Как использовать функцию SUM() для столбцов бит в T-SQL?

Когда я попытаюсь сделать это, как показано ниже:

SELECT SUM(bitColumn) FROM MyTable;

Я получаю сообщение об ошибке:

Бит типа операнда недействителен для оператора суммы.

Ответы

Ответ 1

SELECT SUM(CAST(bitColumn AS INT))
FROM dbo.MyTable

нужно указать в число

или другое решение -

SELECT COUNT(*)
FROM dbo.MyTable
WHERE bitColumn = 1

Ответ 2

Вы можете считать 0 нулями и просто подсчитать оставшиеся значения:

SELECT count(nullif(bitColumn, 0))
FROM MyTable;

Ответ 3

Вы можете достичь с помощью CONVERT,

SELECT SUM(CONVERT(INT, bitColumn)) FROM MyTable

Ответ 4

Вы можете использовать функцию CAST и CONVERT для типа данных для целочисленного или числового типа данных.

Попробуйте выполнить следующие блоки кода:

SELECT SUM(CAST(bitColumn AS INT)) as bitColumn
FROM MyTable

или

SELECT CONVERT(INT, bitColumn) 
FROM MyTable

Ответ 5

Несколько загадочно:

declare @Foo as Bit = 1;
-- @Foo is a Bit.
select SQL_Variant_Property( @Foo, 'BaseType' );
-- But adding zero results in an expression with data type Int.
select SQL_Variant_Property( @Foo + 0, 'BaseType' );
select Sum( @Foo + 0 );

declare @Samples as Table ( Foo Bit );
insert into @Samples ( Foo ) values ( 0 ), ( 1 ), ( 0 ), ( 0 ), ( 1 ), ( 1 ), ( 1 ), ( 1 );
select Sum( Foo + 0 ) from @Samples;

Это, конечно, не улучшает удобочитаемость или ремонтопригодность, но компактно.

Ответ 6

SELECT SUM (битКолонна * 1) FROM dbo.MyTable

Преобразует бит в int путем умножения, очистки и простого