programing

왼쪽 외부 결합에서 반환된 기본 Null 값 바꾸기

prostudy 2022. 9. 13. 21:40
반응형

왼쪽 외부 결합에서 반환된 기본 Null 값 바꾸기

왼쪽 외부 조인을 사용하여 3개의 테이블에서 데이터를 반환하는 Microsoft SQL Server 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'

가능하면 Quantity와 Regular Price를 디폴트로 0으로 해 주셨으면 합니다.

그것은 만큼 쉽다.

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'

의 경우MySQL또는SQLite올바른 키워드는 (not)입니다.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'

MySQL

COALESCE(field, 'default')

예를 들어 다음과 같습니다.

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

또한 여러 열을 사용하여 각 열을 확인할 수 있습니다.NULLCOALESCE 함수에 의해.예를 들어 다음과 같습니다.

mysql> SELECT COALESCE(NULL, 1, NULL);
        -> 1
mysql> SELECT COALESCE(0, 1, NULL);
        -> 0
mysql> SELECT COALESCE(NULL, NULL, NULL);
        -> NULL

Oracle의 경우 다음을 사용할 수 있습니다.

NVL(columnName,deafultValue):- NVL은 쿼리 출력에서 늘 값을 기본값으로 변환하기 위해 사용됩니다.예를 들어 null 값을 'NA'로 바꾸려면 다음과 같은 방법을 사용하십시오.

SELECT NVL(columnName,'NA') FROM tableName

언급URL : https://stackoverflow.com/questions/1664266/replace-default-null-values-returned-from-left-outer-join

반응형