2013-12-24 6 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'.

Но проблема в том, что некоторые из них имеют «R01» и «R02» для PRCS_STE_CD.

(В этом случае, когда она имеет и R01 и R02, я не хочу, чтобы показать его в списке.)

Basiacally, я хочу, чтобы показать тот, который имеет только R01 для PRCS_STE_CD.

Oh and 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 –

ответ

3

В вашем столе, как вы сохранили R02 для PRCS_STE_CD. Я предполагаю, что у вас есть другой столбец для хранения R02. Если это так, вы можете попробовать использовать IN и OR Operators как.

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' 
       ) 
Смежные вопросы