Итак, я работаю с запросом, который выглядит примерно так (см. Ниже), и я пытаюсь вытащить только определенные поля, но у меня возникают проблемы с его выполнением. Любая интуиция будет принята с благодарностью.
WITH abc1 AS (
<some query that joins two tables together and lets say produces fields (a1,a2,a3)> ),
abc2 AS (
<some query that joins two tables together and lets say produces fields (b1,b2,b3)> ),
abc3 AS (
<some query that joins two tables together and lets say produces fields (c1,c2,c3)> )
SELECT * FROM abc1
Это работает и так мне нужно.
LEFT JOIN abc2
ON abc1.a1 = abc2.b1
Допустим, я хочу только см. abc2.b2, а не abc2.b1 & ab c .b3 в окончательных результатах. Как мне сделать эту работу?
LEFT JOIN abc3
ON abc1.a1 = abc3.c1
Допустим, я хочу видеть только abc3.c3, а не abc3.c1 или abc3.c2. Кроме того, если в соединении между abc1 и abc3 выдается значение NULL, заполните 0, если есть совпадение, заполните 1. Примерно так:
CASE WHEN abc3.c1 IS NULL THEN 0 ELSE 1 END ACTIVE_IND
Я пытался это сделать (опубликовать операторы CTEs WITH) но это не сработало.
SELECT abc1.a1 abc1.a2 abc1.a3 abc2.b2 abc3.c3 ОТ (ВЫБРАТЬ * ОТ abc1
LEFT JOIN abc2
ON abc1.a1 = abc2.b1
LEFT JOIN abc3
ON abc1.a1 = abc3.c1);