반응형
내 SUM 선택 쿼리가 null을 반환합니다.0을 반환해야 합니다.
다음 쿼리를 사용하여 고객 잔액을 요약하려고 합니다.
select sum(balance) from mytable where customer = 'john'
그러나 고객이 잔액이 없는 경우(즉, 일치하는 행이 없는 경우)mytable테이블), 내 쿼리는 0이 아닌 null을 반환합니다.문제가 뭐죠?
사용해 보십시오.
select COALESCE(sum(balance),0) from mytable where customer = 'john'
이 정도면 효과가 있을 겁니다.병합 메서드는 0을 반환해야 합니다.
그건 문제가 아닙니다.행이 없으면,sum()돌아올 것입니다null또한 반환됩니다.null모든 행에 a가 있는 경우null균형.
대신 0을 반환하려면 다음을 시도합니다.
select isnull(sum(balance),0) from mytable where customer = 'john'
select coalesce(sum(coalesce(balance,0)),0) from mytable where customer = 'john'
아마도 당신은 생각하고 있을 것입니다.COUNT의 행동?
COUNT(Field)돌아올 것입니다0그렇지만SUM(Field)돌아온다NULL일치하는 행이 없는 경우.
당신은 필요합니다.ISNULL또는COALESCE
모든 값이 다음과 같은 경우에만 발생합니다.NULL또는 값/값이 전혀 없습니다.
커튼 뒤에서 무슨 일이 일어나는지 항상 테스트할 수 있습니다.
사용자 정의 값을 사용한 예제(Postgre)SQL SQL):
WITH test_data (a, b) as (
SELECT *
FROM (VALUES
('example1', 1),
('example2', 2),
('example3', NULL),
('example3', 3),
(NULL, NULL),
(NULL, 5),
(NULL, 5),
('example4', NULL)
) t
)
SELECT
a,
SUM(b) AS b
FROM test_data
GROUP BY 1
사용해 보십시오.
select sum(IsNull(balance,0)) from mytable where customer = 'john'
언급URL : https://stackoverflow.com/questions/17048343/my-select-sum-query-returns-null-it-should-return-0
반응형
'programing' 카테고리의 다른 글
| C 부동 소수점을 int로 변환 (0) | 2023.07.10 |
|---|---|
| Spring Boot을 PostgreSQL에 자동으로 다시 연결하려면 어떻게 해야 합니까? (0) | 2023.07.10 |
| 여러 단계 항목에 대한 치명적인 오류 발생 (0) | 2023.07.10 |
| 읽기 전용 스냅샷 VS 스냅샷 분리 수준 (0) | 2023.07.10 |
| 비동기 작업 Android 예제 (0) | 2023.07.05 |