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
使用正确的 INNER
与 ON
子句连接,对于 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
我正在组合来自几个不同表的数据,但 运行 遇到一个问题,其中一个表 (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
使用正确的 INNER
与 ON
子句连接,对于 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