我有一个包含数百行和数十 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/

10-15 21:18