SQL一行到多行

时间:2013-10-13 12:09:44

标签: sql

假设我有一个表:其中x是choose1的值,choose2的y值是

    ID Chose1 Chose2 x y
    1  A      B      2 3
    2  C      D      3 5

从这里我想得到这样的东西:其中z是x * y(如果选择为空,y = 1)。

   NR ID Chose1 Chose2 z
   1  1  A             2
   2  1  A      B      6
   3  1         B      3
   4  2  C             3
   5  2  C      D      15
   6  2         D      5

1 个答案:

答案 0 :(得分:1)

此select语句将使用您提供的示例获取上述数据:

select (ID-1)*3+1 as NR, id, Choose1, null as Choose2, x as z from tbl_values
union 
select (ID-1)*3+2, id, Choose1, Choose2, x*y from tbl_values
union
select (ID-1)*3+3, id, null, Choose2, y from tbl_values
order by NR

在这里演示(在MySQL,SQL Server中测试):http://sqlfiddle.com/#!2/5af4b/3