SSIS 2012:如何按钥匙计算?

时间:2014-09-26 16:20:49

标签: ssis

我有一个重复键值的数据集。在下面的示例中,每次由不同的组(保留列)更改状态时,订单号都会重复。

Order #   |   Hold
-----------------------
123456    |    H1
123456    |    H2
564653    |    H1

有很多关于如何删除重复的例子,但我实际上想要计算它们。我想看到的是:

Order #   |   Hold  | Count
----------------------------
123456    |    H2   |   1
123456    |    H1   |   2
564653    |    H1   |   1

保留没有时间价值,日期可以是相同的日期。对于123456,计数的顺序并不重要,H1可能有1,而H2可能有2.也许计数不是正确的术语。

我如何在SSIS 2012中实现这一目标?

1 个答案:

答案 0 :(得分:1)

使用ROW_NUMBER()函数..

declare @tablename table (OrderNum varchar(10), Hold varchar(3))

insert into @tablename (OrderNum, Hold)
select '123456', 'H1'
union all
select '123456', 'H2'
union all
select '564653', 'H1'

select 
    OrderNum, Hold,
        ROW_NUMBER() over (partition by OrderNum order by Hold DESC) as [Count]
from @tablename

仅供参考.. 如果您想订购,请将order by Hold DESC更改为order by Hold ASC