Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SSIS结果列名中基于每行可用值的case语句_Sql Server_Ssis_Ssis 2012 - Fatal编程技术网

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

Sql server SSIS结果列名中基于每行可用值的case语句,sql-server,ssis,ssis-2012,Sql Server,Ssis,Ssis 2012,我需要在SSIS中编写一个case语句,我必须基于每行中可用的值填充该语句的列名 我从这里的一些帖子中得到了一些想法,但我被困在如何填充列名的问题上,我不想硬编码列名,除非没有其他方法 Assetname |SP Rating|InHouse |Moody |RatingCounter ----------------------------------------------- ABC | | A+ | AB | ------------------

我需要在SSIS中编写一个case语句,我必须基于每行中可用的值填充该语句的列名

我从这里的一些帖子中得到了一些想法,但我被困在如何填充列名的问题上,我不想硬编码列名,除非没有其他方法

Assetname |SP Rating|InHouse |Moody  |RatingCounter
-----------------------------------------------
ABC       |         |  A+    | AB    |
------------------------------------------------
XYZ       | B+      | A+     | AA+   |
------------------------------------------------
PQR       | BBB     |        | B+    |
------------------------------------------------
MNC       |         |        |       |  
-------------------------------------------------
IIR       |         | AAA+   |       |
-------------------------------------------------
我有两个要求第一部分我已经做了,但我不知道如何做下一部分。 如果它是SQL,我会取得更大的进步,但我不擅长SSIS

要求1 使用每个资产的可用评级数量计数填充评级计数器 解决方案:-我在派生列中编写了此逻辑,以计算非空值并将其相加

!ISNULL([Moody]) ? 1 : 0) + (!ISNULL([SP Rating]) ? 1 : 0) +(!ISNULL([InHouse]) ? 1 : 0) 
还有其他更好的方法吗

要求2 这有点复杂。我需要添加另一个派生列“Rating Source” 并根据评级计数器填充它

  • 案例评级计数器=0:则为空

  • Case Rating COunter=1:然后是提供程序的列标题 (例如,对于最后一行,IIR评级来源为“内部”)

  • 案例评级计数器=2如果案例2评级可用,则采用更差的评级 (例如,资产ABC评级来源的第一行为穆迪评级(因为AB比A差+),或资产PQR的第三行为“SP评级”,因为BBB比B差+

  • 案例评级计数器=3 当3个等级可用时,以第二行的中间等级为例,XYZ AA+是最好的,A+是中间的,B+更差。我们必须为A+选择列标题,该标题为“内部”


我不知道如何在SSIS中做到这一点。任何指针都会很感激您对需求1的处理方法很好。2尽管如此。2由于您的上一个业务规则,它是很棘手的。通常,您所看到的是一个Unpivot操作(将您的宽表变成一个高表),然后类似于聚合的东西将满足0/1/2(虽然您需要提供一个映射以确保B+在BBB上正确排序)。可能是条件拆分,然后是评级计数器3的脚本组件。要求2足够复杂,我将立即进行脚本转换。