Я пытаюсь присоединиться к двум столам.Один столбец существует в таблице, но другой является производным.
event_date - exists directly in the table
deploy_date - derived using case statement
См. Строку # 6 в исходном запросе.
1 SELECT ab.id,
2 ab.event_date,
3 CASE
4 WHEN ab.label = 'ABC' THEN ab.event_date
5 WHEN ab.label = 'DEF' THEN ab.start_date
6 END deploy_date,
7 FROM ab_bro AB
8 LEFT JOIN ab_rev rv
9 ON ab.bro_id = rv.bro_id
10 AND ab.event_date = rv.event_date
Теперь я хочу использовать deploy_date
вместоevent_date
в строке # 10 (выше) Поскольку sql не позволяет использовать псевдоним в соединениях, я попытался использовать подзапрос
SELECT ab.id,
ab.event_date,
CASE
WHEN ab.label = 'ABC' THEN ab.event_date
WHEN ab.label = 'DEF' THEN ab.start_date
END deploy_date,
FROM ab_bro AB
LEFT JOIN ab_rev rv
ON ab.bro_id = rv.bro_id
AND
(
SELECT
CASE
WHEN AC.label = 'ABC' THEN AC.event_date
WHEN AC.label = 'DEF' THEN AC.start_date
END deploy_date from ab_bro AC) = rv.event_date
Моя ошибка -
ОШИБКА: более одной строки, возвращенной подзапросом, используемым в качестве выражения
Я понимаю, что мой подзапрос действительно возвращает более одной строки, но я не знаю, как это исправить.