Моя проблема в том, что я хочу установить 0 для каждого пропущенного LAST_YARD_ROW
, предполагая, что у каждого парка есть свой номер или строки.
Проблема в линии перекрестного соединения.
SELECT
lypb.last_yard_park,
lypb.last_yard_bay,
lyr.last_yard_row,
0 top_tier
FROM
(SELECT DISTINCT
last_yard_bay,LAST_YARD_PARK
FROM
TOWERS) lypb
CROSS JOIN
(SELECT DISTINCT LAST_YARD_ROW FROM TOWERS) lyr (last_yard_row)
WHERE
NOT EXISTS (SELECT *
FROM TOWERS t
WHERE t.last_yard_bay = lypb.last_yard_bay
AND t.LAST_YARD_PARK= lypb.LAST_YARD_PARK
AND t.last_yard_row = lyr.last_yard_row)
UNION
SELECT *
FROM TOWERS
ORDER BY
LAST_YARD_PARK, LAST_YARD_BAY, LAST_YARD_ROW;
Это мой вывод:
park Bay Row Tier
A1 007 00A 01
A1 007 00B 0
A1 007 00C 0
A1 007 00D 0
A1 007 00E 05
A2 007 00A 0
A2 007 00B 02
A2 007 00C 0
A2 007 00D 0
A2 007 00E 0
И ожидаемый вывод, потому что парк A2 имеет только 00A
00B
00C
только строки
park Bay Row Tier
A1 007 00A 01
A1 007 00B 0
A1 007 00C 0
A1 007 00D 0
A1 007 00E 05
A2 007 00A 0
A2 007 00B 02
A2 007 00C 0