Условные SQL-запросы с SQL-скриптом

У меня есть две таблицы с примерами:

TABLE1:
      ID    | COLUMN_B| COLUMN_C
   _________|_________|_________
       1    |    0    |    1
    ________|_________|_________
       2    |    0    |    1
    ________|_________|_________
       3    |    0    |    1


    TABLE2:
      ID    | COLUMN_E| COLUMN_F
    ________|_________|________
       1    |    Y    |    X
    ________|_________|_________
       2    |    Y    |    X
    ________|_________|_________
       3    |    Y    |    X

Они связаны друг с другом с помощью столбца ID. Я хотел бы выполнить выбор в таблице TABLE1, добавив COLUMN_B и получив COLUMN_C только в том случае, если значение COLUMN_E равно Y.

Можно ли создать условие, которое имитирует что-то вроде: «выберите column_b и выберите column_c, ЕСЛИ И ТОЛЬКО ЕСЛИ значение в column_e из TABLE2 равно Y для того же идентификатора»?


person Nicole    schedule 20.09.2018    source источник


Ответы (2)


Если я правильно понял, это всего лишь case выражение:

select t1.column_b,
       (case when t2.column_e = 'Y' then t1.column_c end) as column_c
from table1 t1 left join
     table2 t2
     on t1.id = t2.id;
person Gordon Linoff    schedule 20.09.2018

использовать присоединиться

    select t1.COLUMN_B,
   case when t2.COLUMN_E='Y' then t1.COLUMN_C else null
end as c from table1 t1 
    left join table2 t2 on t1.id=t2.id
person Zaynul Abadin Tuhin    schedule 20.09.2018
comment
К сожалению, это не решит проблему :( Этот запрос не принесет мне ни column_b, ни column_c, когда column_e! = Y. Я бы хотел, чтобы он всегда приносил column_b, но приносил column_c только тогда, когда column_e = Y. - person Nicole; 20.09.2018
comment
@Nicole тогда я ошибся на самом деле случай когда решу твою проблему - person Zaynul Abadin Tuhin; 20.09.2018