2016-12-22 6 views
0

Поиск таблицу, чтобы увидеть, если он содержит X, если он не найдет XI нужно это вернуть Y. Это то, что я пытался до сих пор:Case DB2 Когда Exists

SELECT WHEN T1.X IS NULL THEN Y ELSE T1.X END AS XY 
FROM TABLE1 T1 
LEFT JOIN TABLE2 T2 ON T1.X = T2.X 
WHERE T1.X IN (A, B, C); 

SELECT CASE WHEN T1.X IS NOT NULL THEN T1.X ELSE Y END AS XY 
FROM TABLE1 T1 
WHERE T1.X IN (A, B, C) 
AND T1.X IN (
    SELECT T2.X 
    FROM TABLE2 T2); 

SELECT CASE WHEN EXISTS (SELECT X FROM TABLE1) THEN X ELSE Y END AS XY 
FROM TABLE1 
WHERE X IN (A, B, C); 

Я получаю 0 строк возвращаемые где не найти A, B или C, а не Y. Но если он находит A, B, C или он правильно вернуть X.

+0

Вы можете показать некоторые выборочные данные и ожидаемый результат. Сейчас не совсем понятно, чего вы пытаетесь достичь. – mustaccio

ответ

0

Простой UNION

SELECT X FROM TABLE1 WHERE X IN (A, B, C) 
UNION 
SELECT Y FROM SYSIBM.SYSDUMMY1 
WHERE NOT EXISTS (SELECT X FROM TABLE1 WHERE X IN (A, B, C)) 
+0

Спасибо! Так оно и было. – LiquorFueledRage