Oracle SQL return 静态值,如果在 Select 中找不到行

Oracle SQL return static value if no row found in Select

我正在组合来自几个不同表的数据,但 运行 遇到一个问题,其中一个表 (sloc.export_code) 有时包含数据,有时为 NULL,有时没有条目.如果它有数据或为 NULL,那么我能够成功检索数据,如果数据不存在,我就会遇到问题。如果没有行,我想 return MISSING 就像我在数据为 NULL 时所做的那样。

这是我此时的声明。任何帮助将不胜感激。

SELECT
    THC.TRAN_HDR_CATEGORY_PK AS "DB ID",
    'PBI' AS "Order Type",
    THC.INVOICE_NUMBER AS "Invoice Number",
    supl.SUPPLY_CODE AS "Vendor Code",
    supl.supply_name AS "Vendor Name",
    LOC.location_name AS "Location Name",
    NVL(sloc.export_code, 'MISSING') AS "LOC Vendor Export Code",
    THC.INVOICE_AMOUNT AS "Invoice Amount",
    THC.ENTRY_DATE AS "Order Date",
    CASE WHEN (THC.Extract_AP_PK) IS NULL THEN 'NO' ELSE 'YES' END AS "Exported"
 
FROM
    T_TRAN_HDR_CATEGORY THC,
    t_location loc,
    t_supply supl,
    T_SUPPLY_LOCATION sloc
    
WHERE
    THC.LOCATION_ID = LOC.location_id
    AND THC.LOCATION_ID = SLOC.LOCATION_ID
    AND supl.supply_id = THC.SUPPLY_ID
    AND THC.SUPPLY_ID = SLOC.supply_id
    AND THC.ENTRY_DATE >= SYSDATE -7

使用正确的 INNERON 子句连接,对于 table T_SUPPLY_LOCATION 使用 LEFT 连接:

FROM
    T_TRAN_HDR_CATEGORY THC
    INNER JOIN t_location loc ON THC.LOCATION_ID = loc.location_id
    INNER JOIN t_supply supl ON supl.supply_id = THC.SUPPLY_ID
    LEFT JOIN T_SUPPLY_LOCATION sloc ON THC.SUPPLY_ID = sloc.supply_id
WHERE
    THC.ENTRY_DATE >= SYSDATE -7