我正在尝试将一些SSIS ETL转换为sql Server代码。旧的ETl是为2005年编写的,并且正在为2012年编写新的T-SQL代码。我在SSIS ETL中转换了以下数据:
来源表: AssetName,MoodyRating,SPRating,FitchRating
来源数据:
FirstAsset, 1 , 2 , 3
SecondAsset, 4, 5, 6
这与以下内容不相符:
目标表: AssetName,RatingSouce,RatingValue
目标数据:
FirstAsset, Moody, 1
FirstAsset, SP, 2
FirstAsset, Fitch, 3
SecondAsset, Moody, 4
SecondAsset, SP, 5
SecondAsset, Fitch, 6
我想我可以使用UNPIVOT命令在SQL中执行此操作,但我找不到一个示例,它会将RatingSource作为unpivot进程的一部分注入。任何帮助将不胜感激。
答案 0 :(得分:4)
您可以使用UNPIVOT
功能,然后只需替换列名称中的rating
:
select AssetName,
replace(RatingSouce, 'Rating', '') RatingSouce,
RatingValue
from yourtable
unpivot
(
RatingValue
for RatingSouce in ([MoodyRating], [SPRating], [FitchRating])
) unpiv