У меня возникла проблема с созданием запроса с использованием точки опоры. У меня есть таблица, в которой есть 4 колонкиoracle sql pivot группирует мои данные
col1 | col2 | col3 | col4
1 | 1 | 5 | 2
1 | 2 | 6 | 2
1 | 3 | 7 | 2
1 | 4 | 8 | 2
1 | 1 | 5 | 2
1 | 2 | 6 | 2
1 | 3 | 7 | 2
1 | 4 | 8 | 2
Я использую стержень, так что я могу выходные элементы, как это:
col1 | col2 | col3
Вот запрос:
select col1, "1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24"
from (
select col1, col2, col3
from tbl
where col4 = 2
)
pivot
(
max(col2)
for col3
in (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)
)
код работает все время excepct, когда у меня есть две одинаковые записи в базе данных. Затем он группируется и отображается как один. Я хотел бы выводить его как две отдельные, но одинаковые строки. Самое простое исправление, которое я вижу, это то, что я включаю еще один столбец в таблице, который будет работать как идентификатор. Но поскольку я не буду использовать этот идентификатор где-нибудь еще, я думаю, что это бесполезно, и было бы проще и меньше работать, чтобы немного изменить код.
Код выше выдает следующее:
1 5 6 7 8 9
, и я хотел бы это:
1 5 6 7 8 9
1 5 6 7 8 9
Вы правы; вам понадобится дополнительный столбец для определения подмножеств данных. Это может быть просто row_number(), который вы используете для группировки всех строк в «первую строку значений (col1, col2, col3), вторую строку значений (col1, col2, col3) и т. Д.» – Boneist
Пожалуйста, выберите одна СУБД (Sql Server или Oracle) или ваш вопрос действителен для любого из них? –
@Boneist Да похоже, что это лучшая идея. – Kristjan