我正在努力实现以下目标:
我有两列 - 一列有列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 :(得分: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