복붙노트

[SQL] SQL : 하나 개의 컬럼이 널 (null) 값이 합계 3 열?

SQL

SQL : 하나 개의 컬럼이 널 (null) 값이 합계 3 열?

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

해결법

  1. ==============================

    1.열이 0 값이있는 경우, 당신은 정상입니다, 내 생각 엔 당신이 NULL 값에 문제가 있다는 것입니다,이 경우 당신은 최소한 항상 0입니다 보장하기 위해 ISNULL (열, 0)를 사용해야합니다.

    열이 0 값이있는 경우, 당신은 정상입니다, 내 생각 엔 당신이 NULL 값에 문제가 있다는 것입니다,이 경우 당신은 최소한 항상 0입니다 보장하기 위해 ISNULL (열, 0)를 사용해야합니다.

  2. ==============================

    2.ISNULL 함수를 사용하여 이전 답변은 MS SQL Server의 경우 정확합니다. 병합 기능은 SQL 서버에서 작동합니다. 뿐만 아니라 표준 SQL 데이터베이스 시스템에서 작동합니다. 주어진 예에서 :

    ISNULL 함수를 사용하여 이전 답변은 MS SQL Server의 경우 정확합니다. 병합 기능은 SQL 서버에서 작동합니다. 뿐만 아니라 표준 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의 두 작품은 그러나, COALESCE는 ANSI 표준이며, ISNULL은 없습니다. 또한, 유착은 더 유연하다. ISNULL은 두 개의 매개 변수와 함께 작동합니다. 첫 번째 매개 변수는 첫 번째의 다른 값 반환 다음 두 번째 매개 변수의 값이 반환됩니다 NULL이됩니다. COALESCE는 2 걸릴 것 'n'을 매개 변수 (I은 'N'의 한계를 모르는) 및 NULL이 아닌 첫 번째 매개 변수의 값을 반환합니다. 두 변수가 될 때 ISNULL 효과와 동일하다.

  3. ==============================

    3.

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

    4.그냥 참조를 위해, MySQL 용에 해당하는 문은 다음과 같습니다 IFNULL (열, 0).

    그냥 참조를 위해, MySQL 용에 해당하는 문은 다음과 같습니다 IFNULL (열, 0).

    이 문장은, 그렇지 않으면 0으로 평가, 열 값이 아니라면 널 (null)로 평가한다.

  5. ==============================

    5.당신은 ISNULL을 사용할 수 있습니다 :

    당신은 ISNULL을 사용할 수 있습니다 :

    ISNULL(field, VALUEINCASEOFNULL)
    
  6. ==============================

    6.당신 같은 외모, 그냥 TotalHoursM, 그래서이 시도하지 ( "합계 3 열"에서 유래 어디 잘 모르겠어요) SUM에 모든 열을 원하는 :

    당신 같은 외모, 그냥 TotalHoursM, 그래서이 시도하지 ( "합계 3 열"에서 유래 어디 잘 모르겠어요) SUM에 모든 열을 원하는 :

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

    7.또한 NVL 사용할 수 있습니다 (열, 0)

    또한 NVL 사용할 수 있습니다 (열, 0)

  8. ==============================

    8.나는 이것을 시도 할 것입니다 :

    나는 이것을 시도 할 것입니다 :

    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
    
  9. ==============================

    9.당신은 널 (null) 값을 사용 ISNULL 피하려면 (열, 1)

    당신은 널 (null) 값을 사용 ISNULL 피하려면 (열, 1)

  10. from https://stackoverflow.com/questions/1088648/sql-sum-3-columns-when-one-column-has-a-null-value by cc-by-sa and MIT license