没有联合的SQL Server中的行的列

时间:2014-04-22 05:35:26

标签: sql-server

create table #temp 
(tempid int, 
 tempname nvarchar(50), 
 option1 nvarchar(50),
 option2 nvarchar(50),
 option3 nvarchar(50)
)

insert into #temp (tempid, tempname, option1, option2, option3) 
values (1, 'YesNoCancel', 'Yes', 'No', 'Cancel')

我希望输出为

         tempid tempname       options
          1    'YesNOCancel'   'yes'
          1    'YesNOCancel'   'no'
          1    'YesNOCancel'   'cancel'

3 个答案:

答案 0 :(得分:0)

尝试这样

SELECT t.*
FROM temp
OUTER APPLY 
(
    VALUES 
        (tempid, tempname, option1),
        (tempid, tempname, option2),
        (tempid, tempname, option3)

) t(tempid, tempname, option1)

答案 1 :(得分:0)

这对你有帮助:

 SELECT t.tempid,
      x.tempname,
      x.option1  
    FROM #temp t
    CROSS APPLY 
    (
        VALUES 
            (tempid, tempname, option1),
            (tempid, tempname, option2),
            (tempid, tempname, option3)
    ) x (tempid, tempname, option1)

答案 2 :(得分:0)

只需尝试这个

Select tempid,tempname,OptionVal
From #temp 
UNPIVOT (OptionVal FOR Options IN (option1, option2, option3) ) AS T

<强> FIDDLE DEMO