0
У меня есть данные, как это:Oracle 11g Pivot Четкие Ряды
**ATTR_ID** **ATTR_VAL**
103 E
104 F
136 E
136 U
Я хочу, чтобы преобразовать данные в этом с помощью PIVOT:
**103** **104** **136**
E F U
E F E
Использование MAX() в PIVOT производит одну запись. Мне нужно получить обе записи. Идентификатор атрибута может иметь несколько значений атрибутов.
SELECT *
(SELECT ATTR_ID, ATTR_VAL FROM DATA_TABLE)
PIVOT (MAX(ATTR_VAL) FOR ATTR_ID IN (103,104,136))
Я собираюсь сделать это неправильно, используя PIVOT?
Почему существует второй E для 103 и второй F для 104? Эти данные не отображаются в вашем примере. Вы просто копируете его? Если в таблице 104 и 136 было две строки в таблице, как вы знаете, какие строки идут вместе на сворачиваемом выходе? Или это не имеет значения? Если у 104 было 3 строки, откуда вы знаете, нужно ли копировать U или E с 136 вниз? –
Спасибо за ответ. Вы правы, данные не отображаются в образце, но я должен его создать. Другой разработчик объяснил мне, что мне нужно создать «декартовой продукт». Все данные хранятся во вложенных строках. Я должен изменить строки обратно в столбцы, чтобы я мог присоединиться к другой таблице. Означает ли это, что вы больше понимаете эту проблему? – user1413584
Итак, если вы хотите декартово произведение, это означало бы, если бы было 2 строки для 103, 3 строки для 104 и 5 строк для 136, вы получили бы 2 * 3 * 5 = 30 строк. Это правильно? –