如何在oracle sql中执行此操作我尝试了不同的方法。在这里,我提供if else查询以了解我需要执行的操作
if(SELECT SLS_CONT_NO FROM GL WHERE GL.INVNO = '67883' AND GL.CUST_ID = '14714') is not null
then
SELECT DISTINCT M.NAME FROM GL
JOIN SALES_CONT SLS ON GL.SLS_CONT_NO = SLS.SLS_CONT_NO
JOIN MARKETER M ON M.MKTRINIT = SLS.MKTRINIT
WHERE GL.INVNO = '67883' AND GL.CUST_ID = '14714';
ELSE
SELECT DISTINCT M.NAME FROM GL
JOIN TANK TA ON GL.DEST_TANK=TA.TANK_NO
JOIN MARKETER M ON M.MKTRINIT = TA.MKTRINIT
WHERE GL.INVNO = '67883' AND GL.CUST_ID = '14714';
end if
答案 0 :(得分:1)
您可以使用CASE WHEN Statement
SELECT CASE WHEN a.SLS_CONT_NO IS NOT NULL
THEN (SELECT DISTINCT M.NAME
FROM GL b
JOIN SALES_CONT SLS
ON b.SLS_CONT_NO = SLS.SLS_CONT_NO
JOIN MARKETER M
ON M.MKTRINIT = SLS.MKTRINIT
WHERE b.INVNO = '67883' AND b.CUST_ID = '14714')
ELSE (SELECT DISTINCT M.NAME
FROM GL c
JOIN TANK TA
ON c.DEST_TANK = TA.TANK_NO
JOIN MARKETER M
ON M.MKTRINIT = TA.MKTRINIT
WHERE c.INVNO = '67883' AND c.CUST_ID = '14714')
END AS NAME
FROM GL a
WHERE a.INVNO = '67883'
AND a.CUST_ID = '14714';
答案 1 :(得分:1)
使用UNION
子句考虑EXISTS/NOT EXISTS
查询,其中至少有一个SELECT
语句将返回:
SELECT M.NAME FROM GL
JOIN SALES_CONT SLS ON GL.SLS_CONT_NO = SLS.SLS_CONT_NO
JOIN MARKETER M ON M.MKTRINIT = SLS.MKTRINIT
WHERE GL.INVNO = '67883' AND GL.CUST_ID = '14714'
AND EXISTS (SELECT SLS_CONT_NO FROM GL
WHERE GL.INVNO = '67883' AND GL.CUST_ID = '14714')
UNION
SELECT M.NAME FROM GL
JOIN TANK TA ON GL.DEST_TANK = TA.TANK_NO
JOIN MARKETER M ON M.MKTRINIT = TA.MKTRINIT
WHERE GL.INVNO = '67883' AND GL.CUST_ID = '14714'
AND NOT EXISTS (SELECT SLS_CONT_NO FROM GL
WHERE GL.INVNO = '67883' AND GL.CUST_ID = '14714')