Проблема с PIVOT Oracle 11: Когда я выполняю следующее, я получаю нормализованные результаты с данными во всех полях F2-F4, где имеются данные; F1 является ключом, поэтому всегда есть данные:Lossy JOIN при использовании PIVOT в Oracle
select t1.F1, t2.F2, t2.F3, t2.F4
from schema.t1,
schema.t2
where
t1.F1 = t2.F1 (+)
Теперь я иду использовать функцию PIVOT Oracle присоединиться все поля F2 - F4, так что есть один F2 и т.д., поле для всех полей F2 среди как многие как 5 строк, все сцепленных следующим образом:
select * from (
select F1,
TRIM("1_F2") || TRIM("2_F2") || TRIM("3_F2") || TRIM("4_F2") || TRIM("5_F2") as "F2",
TRIM("1_F3") || TRIM("2_F3") || TRIM("3_F3") || TRIM("4_F3") || TRIM("5_F3") as "F3",
TRIM("1_F4") || TRIM("2_F4") || TRIM("3_F4") || TRIM("4_F4") || TRIM("5_F4") as "F4"
from (
select ROWNUM as RN, T.* from (
select t1.F1, t2.F2, t2.F3, t2.F4
from schema.t1,
schema.t2
where
t1.F1 = t2.F1 (+)
) T
)
PIVOT (
MAX(F2) as "F2",
MAX(F3) as "F3",
MAX(F4) as "F4"
FOR RN in (1,2,3,4,5)
)
)
Это возвращает данные, такие, что не все данные, найденные среди F2 строк, например, возвращается объединены в один ряд F2 для всех записей. Для записей, где он работает, действительно, я получаю все данные, найденные в нормализованном результате. Однако, когда он не работает, данные, найденные в нормализованном результате, не возвращаются.
Любые идеи? Что мне не хватает?
Заранее спасибо.
Это не оценивает ни - ваши скобки не совпадают. – dipdapdop
@ dipdapdop Да, вы были правы. И у меня были важные части, которые были излишне встроены в подвыборки, поэтому я тоже их применил. –
В предложении внешнего выбора по-прежнему существует синтаксическая ошибка. Могу ли я также предложить вам предоставить некоторые тестовые данные в блоке WITH - лучше иметь полностью рабочий пример. – dipdapdop