为一行中的每列返回不同的行

时间:2013-05-21 19:16:47

标签: sql

我的数据以多行和多列呈现,其中包含0或1个值。我要做的是为每个1创建一个唯一的行,但有时连续多个1。例如:

**A    B    C    D**
  1    0    1    1
  0    0    0    1
  1    1    0    0

我想返回六行,所有这些都在一列中,如此

**RETURN**
     A
     C
     D
     D
     A
     B

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以使用union all声明执行此操作:

select val
from ((select 'A' as val from t where A = 1) union all
      (select 'B' from t where B = 1) union all
      (select 'C' from t where C = 1) union all
      (select 'D' from t where D = 1)
     ) t

作为注释:我希望您可以在输出中包含其他列。根据定义,SQL表不是有序的。所以,你真的不知道任何给定值的原始来源示例。