删除多列的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' |
...