에 의해 제거된다 카운트 독특하고 Null 값은 (내 실제 쿼리에서 간체) 나는 아래의 쿼리와 SQL 서버 2005을 사용하고 집계
select a,count(distinct b),sum(a) from
(select 1 a,1 b union all
select 2,2 union all
select 2,null union all
select 3,3 union all
select 3,null union all
select 3,null) a
group by a
이없는 별개의 수를 할 수있는 방법이 있습니까
"경고 : Null 값이 집계 또는 다른 SET 연산에 의해 제거됩니다."점점 두 쿼리 수를 별개의 하나에 분리
떨어져
- 켜기 ANSI_WARNINGS와 합 절은 널 (null)을 제거하기 위해 어디 하나 : 여기 내가 생각할 수있는 대안
select t1.a, t1.countdistinctb, t2.suma from ( select a,count(distinct b) countdistinctb from ( select 1 a,1 b union all select 2,2 union all select 2,null union all select 3,3 union all select 3,null union all select 3,null ) a where a.b is not null group by a ) t1 left join ( select a,sum(a) suma from ( select 1 a,1 b union all select 2,2 union all select 2,null union all select 3,3 union all select 3,null union all select 3,null ) a group by a ) t2 on t1.a=t2.a
는 클라이언트의 경고를 무시
더 좋은 방법이 있나요? 아마 2 번 경로를 따라갈 것이지만 코드 중복을 싫어할 것입니다. 어느 곳
나는 당신의 이전 코드는 잘 생각 데이터베이스해야 어떤 프로그래머가 DISTINCT가 어쨌든 계산 널 (null)을 포함해야한다고 생각하는 경향 될 수 있기 때문에, 경고를 올릴 이유 놀라움으로 문제가 당신에게. 나는 경고 경고가 ANSI SQL을 준수한다고 생각한다. –
당신의 설명이 이치에 맞습니다. 그래도 나는 그들을 피할 수 있다면 경고를 좋아하지 않는다. –