복붙노트

[SQL] 가입 왼쪽 외부에서 반환 된 기본 널 값을 교체

SQL

가입 왼쪽 외부에서 반환 된 기본 널 값을 교체

나는 세 개의 테이블에서 데이터를 반환은 왼쪽 외부 조인을 사용하는 마이크로 소프트 SQL 서버 2008 쿼리가 있습니다. 여러 번,이 두 번째와 세 번째 테이블에 데이터없고 내가 왼쪽 외부 조인을위한 기본이라고 생각 널을 얻을 수 있도록. select 문에서 기본값을 대체 할 수있는 방법이 있습니까? 나는 테이블 변수로 선택할 수있는 해결 방법이 있지만 약간의 오염을 느낀다.

SELECT iar.Description, iai.Quantity, iai.Quantity * rpl.RegularPrice as 'Retail', 
iar.Compliance FROM InventoryAdjustmentReason iar
LEFT OUTER JOIN InventoryAdjustmentItem iai  on (iar.Id = iai.InventoryAdjustmentReasonId)
LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
WHERE iar.StoreUse = 'yes'

가능하면 I 0으로 기본값으로 수량 및 RegularPrice을하고 싶습니다.

해결법

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

    1.쉽게로 그의

    쉽게로 그의

    IsNull(FieldName, 0)
    

    이상 완전히 :

    SELECT iar.Description, 
      ISNULL(iai.Quantity,0) as Quantity, 
      ISNULL(iai.Quantity * rpl.RegularPrice,0) as 'Retail', 
      iar.Compliance 
    FROM InventoryAdjustmentReason iar
    LEFT OUTER JOIN InventoryAdjustmentItem iai  on (iar.Id = iai.InventoryAdjustmentReasonId)
    LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
    LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
    WHERE iar.StoreUse = 'yes'
    
  2. ==============================

    2.MySQL의 또는 SQLite는의 경우 정확한 키워드는 IFNULL (하지 ISNULL)입니다.

    MySQL의 또는 SQLite는의 경우 정확한 키워드는 IFNULL (하지 ISNULL)입니다.

     SELECT iar.Description, 
          IFNULL(iai.Quantity,0) as Quantity, 
          IFNULL(iai.Quantity * rpl.RegularPrice,0) as 'Retail', 
          iar.Compliance 
        FROM InventoryAdjustmentReason iar
        LEFT OUTER JOIN InventoryAdjustmentItem iai  on (iar.Id = iai.InventoryAdjustmentReasonId)
        LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
        LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
    WHERE iar.StoreUse = 'yes'
    
  3. ==============================

    3.

    COALESCE(field, 'default')
    

    예를 들면 :

      SELECT
        t.id,
        COALESCE(d.field, 'default')
      FROM
         test t
      LEFT JOIN
         detail d ON t.id = d.item
    

    또한, 유착 기능으로 자신의 NULL을 확인하기 위해 여러 열을 사용할 수 있습니다. 예를 들면 :

    mysql> SELECT COALESCE(NULL, 1, NULL);
            -> 1
    mysql> SELECT COALESCE(0, 1, NULL);
            -> 0
    mysql> SELECT COALESCE(NULL, NULL, NULL);
            -> NULL
    
  4. from https://stackoverflow.com/questions/1664266/replace-default-null-values-returned-from-left-outer-join by cc-by-sa and MIT license