我有一个名为PERSONNELSERVICELEVELS
的表格,其中包含ID
和Name
等常规信息,但还有许多列标识为ServiceLevel%
,如下所示:
Person_ID Last_Name First_Name ServiceLevel1 ServiceLevel2 ServiceLevel3 etc.
--------- --------- ---------- ------------- ------------- -------------
222 Doe John 4 5 NULL
555 Doe Jane 2 6 9
我想创建一个SELECT
语句来生成此输出:
Person_ID Last_Name First_Name ServiceLevel Level
--------- --------- ---------- ------------ -----
222 Doe John ServiceLevel1 4
222 Doe John ServiceLevel2 5
222 Doe John ServiceLevel3 NULL
555 Doe Jane ServiceLevel1 2
555 Doe Jane ServiceLevel2 6
555 Doe Jane ServiceLevel3 9
感谢。
答案 0 :(得分:0)
要将列转换为行,可以这么说,您可以使用UNION
,如:
select Person_ID, Last_Name, First_Name, 'ServiceLevel1' as ServiceLevel, ServiceLevel1 as [Level]
from PERSONNELSERVICELEVELS
union all
select Person_ID, Last_Name, First_Name, 'ServiceLevel2' as ServiceLevel, ServiceLevel2 as [Level]
from PERSONNELSERVICELEVELS
union all
-- etc.
我在这里使用union all
,因为union也会隐式运行一个不同的操作,这在这里是不必要的。
您也可以使用UNPIVOT
执行此类操作。