SSIS结果中的case语句列名基于每行中可用的值

时间:2015-10-09 09:23:23

标签: sql-server ssis ssis-2012

我需要在SSIS中编写一个case语句,我必须根据每行中可用的值来填充列名。

我从这里的一些帖子中得到了一些想法,但我不知道如何填充列名作为结果,除非没有其他办法,否则我不想要硬编码名称。

Assetname |SP Rating|InHouse |Moody  |RatingCounter
-----------------------------------------------
ABC       |         |  A+    | AB    |
------------------------------------------------
XYZ       | B+      | A+     | AA+   |
------------------------------------------------
PQR       | BBB     |        | B+    |
------------------------------------------------
MNC       |         |        |       |  
-------------------------------------------------
IIR       |         | AAA+   |       |
-------------------------------------------------

我有两个要求第一部分我做了,但我不知道如何做下一部分。 如果它是SQL,我会进一步发展,但我在SSIS中并不出色。

要求1

使用每个资产可用的评级数填充评级计数器 解决方案: - 我已在Derived列中编写此逻辑以计算非null值并添加它们

!ISNULL([Moody]) ? 1 : 0) + (!ISNULL([SP Rating]) ? 1 : 0) +(!ISNULL([InHouse]) ? 1 : 0) 

还有其他更好的方法吗?

要求2

这有点复杂。我需要添加另一个派生列'评级来源' 并根据评级计数器填充它。

  • 案例评级COunter = 0:然后空白

  • 案例评级COunter = 1:然后是提供者的列标题 (例如,对于最后一行IIR评级来源将是' In House')

  • 案例评级计数器= 2,如果有2评级可用则评级较差 (例如,资产ABC评级来源的第一行将是穆迪(因为AB比A +差)或者资产PQR为第3行,评级来源将填充“SP评级”,因为BBB更差,然后是B +

  • 案例评分计数器= 3 当3等级可用时,然后取中等评级,例如第二行XYZ AA +最好,A +是中等,B +更差我们必须选择A +的列标题,这是' InHouse'

    < / LI>

我不确定如何在SSIS中执行此操作。任何指针都会感激不尽

0 个答案:

没有答案