使用基于另一列中的值的值创建新列

时间:2018-04-15 13:37:36

标签: sql-server ssis

我正在尝试从Excel工作表中获取数据并使用SSIS将其插入SQL Server数据库。我有一个如下所示的Excel数据集:

ID (int) | PromotionOrNot (string) | PromotionOrRegPrice (decimal)
---------+-------------------------+------------------------------
1        |    Promotion            |      14.99
1        |      Not                |      16.99

我不确定为什么会这样出现,但我在SSIS中使用排序和脚本转换(以及其他各种方法)的最佳方法是:

ID (int) |  RegPrice (decimal) | PromotionPrice (decimal)
---------+---------------------+-------------------------
1        |    0                |      14.99
1        |    16.99            |       0

显然这还不够好,需要这样的设置:

ID | RegPrice | PromotionPrice
---+----------+---------------https://stackoverflow.com/editing-help
1  |   16.99  |      14.99

任何人都可以帮我解决这个问题吗?非常感谢。如有必要,可以提供任何其他信息。

编辑:没关系,我设法使用Union All转换与另一个数据流进行排序。我不确定这是否适合其他人的问题。

编辑2:不,我只是个白痴。所有这些都将上述结果固定在联盟的其他输入的底部。

1 个答案:

答案 0 :(得分:0)

使用Pivot

select ID, [Not] as RegPrice, Promotion as PromotionPrice
from @T
pivot (
    avg (PromotionOrRegPrice) 
    for PromotionOrNot in ([Promotion],[Not])
) As PivotedData