ProgramingTip

SQL : 하나의 열에 null 값이있을 때 3 개의 열을 더 많이?

bestdevel 2020. 11. 19. 21:51
반응형

SQL : 하나의 열에 null 값이있을 때 3 개의 열을 더 많이?


SELECT 
    sum(TotalHoursM)
          + (TotalHoursT)
          + (TotalHoursW)
          + (TotalHoursTH)
          + (TotalHoursF) 
          AS TOTAL
FROM LeaveRequest

열에 0 값이 있으면 괜찮습니다. 제 생각에는 Null 값에 문제가있는 것입니다.이 경우에는 IsNull(Column, 0)항상 최소 0인지 확인하는 있습니다.


ISNULL함수를 해결 이전 답변 은 MS Sql Server에 해당됩니다. COALESCE기능은 SQL Server가 작동합니다. 그러나 표준 SQL 데이터베이스 시스템 작동합니다. 주어진 예에서 :

SELECT sum(COALESCE(TotalHoursM,0))
          + COALESCE(TotalHoursT,0)
          + COALESCE(TotalHoursW,0)
          + COALESCE(TotalHoursTH,0)
          + COALESCE(TotalHoursF,0) AS TOTAL FROM LeaveRequest

ISNULL함수의 이름이라는 유일한 차이점은 제외하고는 솔루션과 동일 합니다. 둘 다 SQL Server에서 작동하지만 COALESCEANSI 표준이며 ISNULL입니다. 또한 COALESCE더 유연합니다. ISNULL두 개의 매개 변수에서만 작동합니다. 첫 번째 번째 매개 변수가 NULL이면 두 번째 매개 변수의 값이 리턴되고있는 언어 첫 번째 변수의 값이됩니다. COALESCE는 2에서 'n'( 'n'의 한계를 초과)하는 변수를 사용하고

NULL. 이 아닌 첫 번째 회차 변수의 값을 리턴합니다 . 한정 변수가 두 개 뿐인 경우 효과는 ISNULL.


SELECT sum(isnull(TotalHoursM,0)) 
         + isnull(TotalHoursT,0) 
         + isnull(TotalHoursW,0) 
         + isnull(TotalHoursTH,0) 
         + isnull(TotalHoursF,0) 
AS TOTAL FROM LeaveRequest

참고로 MySQL에 해당하는 문은 IFNull (Column, 0) 입니다.

이 명령문은 널이 아니면 열 값으로 평가되고, 이름 0으로 평가됩니다.


다음을 사용할 수 있습니다 ISNULL.

ISNULL(field, VALUEINCASEOFNULL)

TotalHoursM 아니라 모든 열 ( "sum 3 columns")을 합산하려는 것처럼 보 다음을 시도합니다.

SELECT 
    SUM(    ISNULL(TotalHoursM  ,0)
          + ISNULL(TotalHoursT  ,0)
          + ISNULL(TotalHoursW  ,0)
          + ISNULL(TotalHoursTH ,0)
          + ISNULL(TotalHoursF  ,0) 
       ) AS TOTAL
    FROM LeaveRequest

당신은 또한 사용할 수 있습니다 nvl(Column,0)


나는 시도 할 것이다 :

select sum (case when TotalHousM is null then 0 else TotalHousM end)
       + (case when TotalHousT is null then 0 else TotalHousT end)
       + (case when TotalHousW is null then 0 else TotalHousW end)
       + (case when TotalHousTH is null then 0 else TotalHousTH end)
       + (case when TotalHousF is null then 0 else TotalHousF end)
       as Total
From LeaveRequest

null 값을 피하십시오. IsNull (열, 1)을 사용하십시오.

참고 URL : https://stackoverflow.com/questions/1088648/sql-sum-3-columns-when-one-column-has-a-null-value

반응형