简体   繁体   中英

SQL Query Left Outer Join with specific record

I have query like this

SELECT P9_IR259_FI, FX_IR259_SYS_PROD_TYP, FX_IR259_SLS_POS, FX_IR259_SLS_CHNL, PX_IR259_OFC_CDE, FX_IR259_SPR_OFC_CDE, FX_IR259_NAME, SUPERNAME, SUPERCDE, SUPERPOS 
FROM IR259 K 
     LEFT OUTER JOIN
         (SELECT FX_IR259_NAME AS SUPERNAME ,FX_IR259_SLS_POS AS SUPERPOS, PX_IR259_OFC_CDE AS SUPERCDE 
         FROM IR259 M 
         WHERE P9_IR259_FI = 75214 AND FX_IR259_SLS_POS = 2 AND FX_IR259_NAME LIKE 'ME%'
         ) ON K.FX_IR259_SPR_OFC_CDE = SUPERCDE 
 WHERE 
    FX_IR259_SLS_POS = '1' 
    AND FX_IR259_SLS_CHNL = 'BRO' 
    AND F9_IR259_CRE_TMS > 00000000000000000 
ORDER BY FX_IR259_SLS_POS, FX_IR259_SPR_OFC_CDE, FX_IR259_SLS_CHNL

but result seems not correct means, i want to show SUPERNAME like 'ME%' only

在此处输入图片说明

the result show the SUPERNAME with like 'ME%' but other records have show too.

Thanks for Advice

You need to add another filter to the where clause.

WHERE 
    FX_IR259_SLS_POS = '1' 
    AND FX_IR259_SLS_CHNL = 'BRO' 
    AND F9_IR259_CRE_TMS > 00000000000000000 
    AND SUPERNAME LIKE 'ME%'

You only need to add another condition in the where clause

SELECT P9_IR259_FI, FX_IR259_SYS_PROD_TYP, FX_IR259_SLS_POS, FX_IR259_SLS_CHNL, PX_IR259_OFC_CDE, FX_IR259_SPR_OFC_CDE, FX_IR259_NAME, SUPERNAME, SUPERCDE, SUPERPOS 
FROM IR259 K 
    LEFT OUTER JOIN
         (SELECT FX_IR259_NAME AS SUPERNAME ,FX_IR259_SLS_POS AS SUPERPOS, PX_IR259_OFC_CDE AS SUPERCDE 
          FROM IR259 M 
         WHERE P9_IR259_FI = 75214 AND FX_IR259_SLS_POS = 2 AND FX_IR259_NAME LIKE 'ME%'
         ) ON K.FX_IR259_SPR_OFC_CDE = SUPERCDE 
 WHERE 
    FX_IR259_SLS_POS = '1' 
    AND FX_IR259_SLS_CHNL = 'BRO' 
    AND F9_IR259_CRE_TMS > 00000000000000000 
    AND SUPERNAME LIKE 'ME%'
ORDER BY FX_IR259_SLS_POS, FX_IR259_SPR_OFC_CDE, FX_IR259_SLS_CHNL
SELECT P9_IR259_FI, FX_IR259_SYS_PROD_TYP, FX_IR259_SLS_POS, FX_IR259_SLS_CHNL, PX_IR259_OFC_CDE, FX_IR259_SPR_OFC_CDE, FX_IR259_NAME, SUPERNAME, SUPERCDE, SUPERPOS 
FROM 
(select * from IR259 where SUPERNAME like 'ME%') K 
     LEFT OUTER JOIN
         (SELECT FX_IR259_NAME AS SUPERNAME ,FX_IR259_SLS_POS AS SUPERPOS, PX_IR259_OFC_CDE AS SUPERCDE 
         FROM IR259 M 
         WHERE P9_IR259_FI = 75214 AND FX_IR259_SLS_POS = 2 AND FX_IR259_NAME LIKE 'ME%'
         ) ON K.FX_IR259_SPR_OFC_CDE = SUPERCDE 
 WHERE 
    FX_IR259_SLS_POS = '1' 
    AND FX_IR259_SLS_CHNL = 'BRO' 
    AND F9_IR259_CRE_TMS > 00000000000000000 
ORDER BY FX_IR259_SLS_POS, FX_IR259_SPR_OFC_CDE, FX_IR259_SLS_CHNL

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM