2013-06-22 2 views

ответ

1

Вы можете сделать pivot почти так же эффективно, используя перекрестное соединение:

select max(case when seqnum = 1 then t.col end) as col1, 
     max(case when seqnum = 2 then t.col end) as col2, 
     max(case when seqnum = 3 then t.col end) as col3, 
     max(case when seqnum = 4 then t.col end) as col4 
from (select t.*, row_number() over (order by NULL) as seqnum 
     from t 
    ) t 
+0

Спасибо за ваш ответ. Знаете ли вы решение по той же проблеме, если количество столбцов не ограничено 4? Потому что в моей проблеме - их 6, и я думаю, что я мог столкнуться с еще большим числом столбцов – Dennis

+0

@Dennis. , , Запрос SQL select должен иметь столбцы с фиксированным номером. Вы можете добавить дополнительные предложения в столбцах 'select' для добавления. Но вы не можете изменить число (они будут заполнены «NULL», если нет значения). В качестве альтернативы вы можете использовать 'list_agg', чтобы поместить их все в один столбец с разделителями. –

+0

Хорошо, я вижу. Большое спасибо. Я отпишу это решение, поскольку это кажется тривиальной задачей. – Dennis

Смежные вопросы