Sql server SSIS ETL Unpivot到T-SQL Unpivot的转换
我正在尝试将一些SSIS ETL转换为sql Server代码。旧的ETl是为2005年编写的,新的T-SQL代码是为2012年编写的。我在SSIS ETL中转换了以下数据: 来源表:资产名称、MoodyRating、SPRating、FitchRating 源数据:Sql server SSIS ETL Unpivot到T-SQL Unpivot的转换,sql-server,tsql,ssis,etl,unpivot,Sql Server,Tsql,Ssis,Etl,Unpivot,我正在尝试将一些SSIS ETL转换为sql Server代码。旧的ETl是为2005年编写的,新的T-SQL代码是为2012年编写的。我在SSIS ETL中转换了以下数据: 来源表:资产名称、MoodyRating、SPRating、FitchRating 源数据: FirstAsset, 1 , 2 , 3 SecondAsset, 4, 5, 6 FirstAsset, Moody, 1 FirstAsset, SP, 2 FirstAsset, Fitch, 3 SecondAsset
FirstAsset, 1 , 2 , 3
SecondAsset, 4, 5, 6
FirstAsset, Moody, 1
FirstAsset, SP, 2
FirstAsset, Fitch, 3
SecondAsset, Moody, 4
SecondAsset, SP, 5
SecondAsset, Fitch, 6
将被取消加载到以下位置:
目标表:资产名称、评级来源、评级价值
目标数据:
FirstAsset, 1 , 2 , 3
SecondAsset, 4, 5, 6
FirstAsset, Moody, 1
FirstAsset, SP, 2
FirstAsset, Fitch, 3
SecondAsset, Moody, 4
SecondAsset, SP, 5
SecondAsset, Fitch, 6
我想我可以在SQL中使用UNPIVOT命令来实现这一点,但是我找不到一个例子可以将RatingSource作为UNPIVOT过程的一部分来注入。任何帮助都将不胜感激。您可以使用
UNPIVOT
功能,然后只需替换列名中的rating
:
select AssetName,
replace(RatingSouce, 'Rating', '') RatingSouce,
RatingValue
from yourtable
unpivot
(
RatingValue
for RatingSouce in ([MoodyRating], [SPRating], [FitchRating])
) unpiv
请参见您可以使用
UNPIVOT
功能,然后只需替换列名中的评级
:
select AssetName,
replace(RatingSouce, 'Rating', '') RatingSouce,
RatingValue
from yourtable
unpivot
(
RatingValue
for RatingSouce in ([MoodyRating], [SPRating], [FitchRating])
) unpiv
请参见谢谢您的示例。这正是我要找的。在我的实际案例中,我需要一个case语句而不是replace来更好地表示我正在转换的数据,但事实就是如此。@JookyDFW是的,您可以使用
case
来完成此操作,我只是使用replace
来演示如何完成此操作。:)谢谢你的例子。这正是我要找的。在我的实际案例中,我需要一个case语句而不是replace来更好地表示我正在转换的数据,但事实就是如此。@JookyDFW是的,您可以使用case
来完成此操作,我只是使用replace
来演示如何完成此操作。:)