2013-12-24 40 views
0

我有一个具有EXISTS查询的查询,它具有PRCS_STE_CD列。 QUERY<SQL>如何编辑EXISTS查询

SELECT   
    PRCS_SNO 
      , YEAR 
      , SUBSC_CANC_YN        
    FROM 
     TB_POT_ECD_PRCS_INFO INF 
    WHERE 
     INF.SUBSC_CANC_YN = 'N' 
     AND EXISTS (
        SELECT 'X' 
        FROM TB_POT_ECD_PRCS_HIST HIS 
        WHERE PRCS_STE_CD = 'R01' 
        ) 

思想是只显示那些PRCS_STE_CD = 'R01'。

但问题是有些人对PRCS_STE_CD有'R01'和'R02'。

(在这种情况下,它既有R01和R02,我不想表现出来就行了。)

Basiacally,我想表明一个仅具有R01的PRCS_STE_CD。

哦和PRCS_STE_CD CAN NOT只有R02。它必须有R01才能有R02。

同样,当它同时具有R01,R02时,不应在列表中选择它。

任何人都可以帮助编辑查询吗?

+2

也许你应该解释你试图解决的问题,给出示例数据和期望的结果。 –

+0

是的,它听起来像你需要的是一个双向左连接/应用,但是外部记录与内部关系是什么关系。内部没有关联,只是返回一个集合而不管外部记录。 – DRapp

+0

http://stackoverflow.com/questions/9023879/sql-update-statement-with-where-exists – 2013-12-24 03:15:52

回答

3

在您的表格中,您是如何为PRCS_STE_CD存储R02的。我假设你有一个不同的列来存储R02。如果是这样,那么你可以尝试使用IN和OR运算符。

SELECT  
    PRCS_SNO, YEAR, SUBSC_CANC_YN        
    FROM TB_POT_ECD_PRCS_INFO INF 
    WHERE INF.SUBSC_CANC_YN = 'N' 
    AND 'X' IN (
       SELECT 'X' 
       FROM TB_POT_ECD_PRCS_HIST HIS 
       WHERE PRCS_STE_CD = 'R01' OR Second_Column= 'R02' 
       )