2017-02-15 1 views
0

Я пытаюсь добиться следующего:Pivot на две колонки

У меня есть две колонки - одна с колонкой ID, и один с данными, принадлежащими к этой колонке.

Исходные данные:

+---------+--------+ 
| ColName | Values | 
+---------+--------+ 
| Column1 |  13 | 
| Column1 |  86 | 
| Column1 |  16 | 
| Column1 |  18 | 
| Column1 |  2 | 
| Column1 |  11 | 
| Column1 |  28 | 
| Column1 |  3 | 
| Column1 |  13 | 
| Column1 |  13 | 
| Column1 |  90 | 
| Column2 |  35 | 
| Column2 |  69 | 
| Column2 |  26 | 
| Column2 |  71 | 
| Column2 |  32 | 
| Column2 |  69 | 
| Column2 |  87 | 
| Column2 |  58 | 
| ColumnN |  13 | 
| ColumnN |  54 | 
| ColumnN |  79 | 
| ColumnN |  86 | 
| ColumnN |  47 | 
| ColumnN |  37 | 
| ColumnN |  65 | 
| ColumnN |  49 | 
| ColumnN |  89 | 
| ColumnN |  27 | 
+---------+--------+ 

Я хотел бы получить следующий результат:

+---------+---------+---------+ 
| Column1 | Column2 | ColumnN | 
+---------+---------+---------+ 
|  13 | 35  | 13  | 
|  86 | 69  | 54  | 
|  16 | 26  | 79  | 
|  18 | 71  | 86  | 
|  2 | 32  | 47  | 
|  11 | 69  | 37  | 
|  28 | 87  | 65  | 
|  3 | 58  | 49  | 
|  13 | NULL | 89  | 
|  13 | NULL | 27  | 
|  90 | NULL | NULL | 
+---------+---------+---------+ 

мне это нужно, чтобы быть динамичным, так как число столбцов в поле ID не известны. Кроме того, данные в поле «Значения» являются полностью произвольными. Это может быть любое и любое количество строк.

Я провел некоторое тестирование с помощью функции crosstab, но, похоже, это применимо только тогда, когда у нас есть третий столбец в необработанных данных.

Любые указания?

+0

Это не ясно из вашего примера только то, что отображение вы хотите от входа до выхода таблиц. Как вы собираете строку вывода из входных строк? Вы получаете строку для каждого значения 'value'? Измените свой вопрос, чтобы закончить следующее предложение: строка (v1, ...) со столбцами (c1, ...) выводится в том и только тогда, когда .... PS Почему вы это делаете? Что вам делать с этим? (По-видимому, вход и выход оба сильно избыточны.) – philipxy

+0

Получили ли вы удовлетворение re dum/dee? – philipxy

ответ

1

Вы можете использовать простой ниже заявление

select a.cvalue col1 , b.cvalue col2 
from 
(select cvalue from stack_overflow where column_id = 'column1') a 
join 
(select cvalue from stack_overflow where column_id = 'column2') b 
on a.cvalue = b.cvalue 
+0

Спасибо, но это немного статично. Мне нужно, чтобы количество столбцов в результате не было предопределено. –

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

  • Нет связанных вопросов^_^