我有一个包含数百行和数十 W 列的表:
Column1 | Column2_W | Column3_W | ColumnX_W
123 | A | B | x
223 | A | NULL | NULL
我如何选择它以便输出是:
Column1 | W
123 | A
123 | B
123 | x
223 | A
编辑:我很清楚我正在使用一个糟糕的数据库“设计”。不幸的是我不能改变它。这个问题实际上是我今天遇到的一个更大问题的一部分。我明天会尝试给定的想法
最佳答案
看看这篇文章:UNPIVOT: Normalizing data on the fly
不幸的是,使用您使用的任何解决方案,您都将不得不手动输入列名。这是在 SQL Server 中使用 UNPIVOT
的示例...
SELECT Column1, W
FROM YourTable
UNPIVOT (W for Column1 in (Column2_W, Column3_W /* and so on */)) AS W
关于SQL 选择单独行上每个选定列的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7093871/