SSIS ETL Unpivot转换为T-SQL Unpivot

时间:2013-02-26 16:28:21

标签: sql-server tsql ssis etl unpivot

我正在尝试将一些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进程的一部分注入。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

您可以使用UNPIVOT功能,然后只需替换列名称中的rating

select AssetName,
  replace(RatingSouce, 'Rating', '') RatingSouce,
  RatingValue
from yourtable
unpivot
(
  RatingValue
  for RatingSouce in ([MoodyRating], [SPRating], [FitchRating])
) unpiv

请参阅SQL Fiddle with Demo