2

PERSONNELSERVICELEVELSなどの一般的な情報で呼び出されるテーブルがありますが、次のように識別される多くの列もあります。IDNameServiceLevel%

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

列を行に変換するには、いわば、次のようにを使用できます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ユニオンは暗黙的に別個の操作も実行するため、ここで使用しています。これはここでは不要です。

このタイプのことは、で行うこともできますUNPIVOT

于 2012-11-16T15:56:32.573 に答える