Как я могу использовать столбцы 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 путем умножения, очистки и простого
Ответ 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;
Ответ 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 путем умножения, очистки и простого