Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除多列的SQL查询(规范化)_Sql_Normalization_Dml - Fatal编程技术网

删除多列的SQL查询(规范化)

删除多列的SQL查询(规范化),sql,normalization,dml,Sql,Normalization,Dml,其中一种方法通常与填充的非规范化表相反,该表虽然有主键,例如: | RowID | Column1 | Column2 | Column3 | Column4 | ... | 'Row1' | 'a1' | 'a2' | 'a3' | 'a4' | | 'Row2' | 'b1' | 'b2' | 'b3' | 'b4' | | 'Row3' | 'c1' | 'c2' | 'c3' | 'c4' | ... 问题是:如

其中一种方法通常与填充的非规范化表相反,该表虽然有主键,例如:

| RowID  | Column1 | Column2 | Column3 | Column4 | ...
| 'Row1' | 'a1'    | 'a2'    | 'a3'    | 'a4'    |
| 'Row2' | 'b1'    | 'b2'    | 'b3'    | 'b4'    |
| 'Row3' | 'c1'    | 'c2'    | 'c3'    | 'c4'    |
...
问题是:如何有效地将其转换为存储数据的3nf?(理想情况下,假设列数及其名称未知)

或者,理想情况下

| RowID  | ColumnID  | Value |
| 'Row1' | 'Column1' | 'a1'  |
| 'Row1' | 'Column2' | 'a2'  |
...
我所知道的一种解决方案是,通过几个并集逐个选择列,但是如果有许多列,脚本看起来会很糟糕

非常感谢您的帮助

致以最良好的祝愿, 康斯坦丁。

实际上,“Unpivot”操作符正是我所需要的

最好的,
君士坦丁

这就是你的目标吗?确实如此,但我需要MS SQL中的这一点
| RowID  | ColumnID  | Value |
| 'Row1' | 'Column1' | 'a1'  |
| 'Row1' | 'Column2' | 'a2'  |
...