2

我有一个表PERSONNELSERVICELEVELS,其中包含一般信息,例如IDand 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

谢谢。

4

1 回答 1

0

可以说,要将列转换为行,您可以使用 a 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.

于 2012-11-16T15:56:32.573 回答