0

一个通常与填充的非规范化表相对,尽管它具有主键,例如:

| RowID  | Column1 | Column2 | Column3 | Column4 | ...
| 'Row1' | 'a1'    | 'a2'    | 'a3'    | 'a4'    |
| 'Row2' | 'b1'    | 'b2'    | 'b3'    | 'b4'    |
| 'Row3' | 'c1'    | 'c2'    | 'c3'    | 'c4'    |
...

问题是:如何有效地将其转换为 3nf 存储数据?(理想情况下,假设列数及其名称未知)

| RowID | ColumnID | Value |
| 1     | 1        | 'a1'  |
| 1     | 2        | 'a2'  |
...

或者,理想情况下,

| RowID  | ColumnID  | Value |
| 'Row1' | 'Column1' | 'a1'  |
| 'Row1' | 'Column2' | 'a2'  |
...

我知道的一种解决方案是使用几个 UNION 选择一个列在另一个下的列,但是如果有很多列,脚本看起来会很糟糕。

任何帮助深表感谢!

最好的问候,康斯坦丁。

4

1 回答 1

0

实际上,我需要的是“Unpivot”运算符。

使用列名取消透视

最佳,康斯坦丁

于 2014-02-26T09:42:42.560 回答