1

我正在尝试将一些 SSIS ETL 转换为 sql Server 代码。旧的 ETl 是为 2005 年编写的,新的 T-SQL 代码是为 2012 年编写的。我在 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 过程的一部分注入的示例。任何帮助,将不胜感激。

4

1 回答 1

4

您可以使用该UNPIVOT函数,然后只需替换rating列名中的 :

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

请参阅带有演示的 SQL Fiddle

于 2013-02-26T16:33:51.200 回答