2017-02-15 102 views
0

我想實現以下目標:樞軸兩列

我有兩列 - 一列有列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字段列數是不知道的。 另外,Values字段中的數據完全是任意的。它可以是任何行和任何數量的行。

我使用crosstab函數做了一些測試,但它似乎只適用於原始數據中有第三列的情況。

任何指導?

+0

簡單它不是從你的例子清楚你從輸入到輸出表想正是映射。你如何從輸入行組裝輸出行?每個「價值」值都會有一行嗎?請編輯您的問題以完成以下語句:列(c1,...)的行(v1,...)在輸出中,當且僅當.... 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

謝謝,但這有點靜態。我需要結果中的列數不被預定義。 –