编写查询以根据某些条件从一条记录生成两条记录

时间:2015-01-31 22:17:33

标签: sql sql-server join

我有列表:

  • FLAG1
  • FLAG2
  • flag1_column1
  • flag1_column2
  • flag1_column3
  • flag2_column1
  • flag2_column2
  • flag2_column3

我的要求是:

  • 如果flag1flag2的值都为true,那么在结果中我应该得到两条记录:

    1. flag1, flag1_column1, flag1_column2, flag1_column3
    2. flag2, flag2_column1, flag2_column2, flag2_column3

我的第二个要求:

如果flag1null0,那么我只能获得一条记录:

flag2 ,flag2_column1, flag2_column2, flag2_column3 

我的第三个要求:

如果flag2null0,那么我只能获得一条记录:

flag1 , flag1_column1, flag1_column2, flag1_column3

1 个答案:

答案 0 :(得分:2)

这是返回所需结果的查询:

select flag1 as flag,
       flag1_column1 as c1, 
       flag1_column2 as c2, 
       flag1_column3 as c3 
from t where flag1=1
union
select flag2 as flag,
       flag2_column1 as c1, 
       flag2_column2 as c3, 
       flag2_column3 as c3 
from t where flag2=1