반응형
비트 열에 SUM을 사용하려면 어떻게 해야 합니까?
T-SQL의 비트 열에 SUM() 함수를 어떻게 사용할 수 있습니까?
다음과 같이 시도할 때:
SELECT SUM(bitColumn) FROM MyTable;
오류가 발생했습니다.
합계 연산자에 대한 피연산자 데이터 유형 비트가 잘못되었습니다.
SELECT SUM(CAST(bitColumn AS INT))
FROM dbo.MyTable
수를 늘릴 필요가 있는
아니면 다른 해결책 -
SELECT COUNT(*)
FROM dbo.MyTable
WHERE bitColumn = 1
SELECT SUM(bitColumn * 1) FROM dbo.MyTable
비트를 곱셈을 통해 깨끗하고 단순한 int로 변환합니다.
0을 null로 간주하고 나머지 값만 계산할 수 있습니다.
SELECT count(nullif(bitColumn, 0))
FROM MyTable;
다음을 사용하여 달성할 수 있습니다.CONVERT
,
SELECT SUM(CONVERT(INT, bitColumn)) FROM MyTable
저의 개인적인 선호는CASE
진술.
SELECT SUM(CASE WHEN bitColumn = 1 THEN 1 ELSE 0 END) FROM MyTable;
코드 압축을 정말로 좋아한다면,IIF
.
SELECT SUM(IIF(bitColumn = 1, 1, 0)) FROM MyTable;
다음 기능을 사용할 수 있습니다.
CREATE TABLE tab_x(b BIT);
INSERT INTO tab_x(b) VALUES(1),(0),(0),(NULL),(0),(1);
SELECT SUM(SIGN(b))
FROM tab_x;
-- 2
CAST 및 CONVERT 함수를 사용하여 데이터 유형을 정수 또는 숫자 데이터 유형으로 변환할 수 있습니다.
다음 코드 블록을 사용해 보십시오.
SELECT SUM(CAST(bitColumn AS INT)) as bitColumn
FROM MyTable
또는
SELECT CONVERT(INT, bitColumn)
FROM MyTable
다소 신비롭게도:
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;
이것은 확실히 가독성이나 유지보수성을 향상시키지는 않지만, 컴팩트합니다.
언급URL : https://stackoverflow.com/questions/33938599/how-can-i-use-sum-for-bit-columns
반응형
'programing' 카테고리의 다른 글
Python은 적절한 시간대에 현재 시간을 얻습니다. (0) | 2023.08.06 |
---|---|
필수_라벨 5 유효성 검사인 경우 (0) | 2023.08.06 |
MySQL 테이블에 대해 '너무 많은' 행은 몇 개입니까? (0) | 2023.08.06 |
Javascript 변수를 PHP POST에 전달 (0) | 2023.08.01 |
어떤 키 저장소가 앱에 서명하는 데 사용되었는지 어떻게 알 수 있습니까? (0) | 2023.08.01 |