根据 SQL 中另一列的值导出自动编号
Derive Autonumber based on value from another column in SQL
我有一个 SSIS 包,它在 backend.I 中有存储过程提要,必须为此 ChannelName 派生自动编号逻辑。
我当前的代码是:
IF @p_channelname ='ABCD'
BEGIN
;WITH CTE_AUTONUMBER_PV_AMER AS
(SELECT RECORDSEQ
, 'ABCD'+CAST(@PrevOrderID+DENSE_RANK()OVER(ORDER BY (RECORDSEQ )) AS NVARCHAR(MAX)) AS AUTONUMBER_UPDATE
, AUTONUMBER
FROM IC_CTXS_TRANSACTION_SOURCEFEED TGT
WHERE TGT.[INTERFACE NAME] =@p_interface
AND TGT.[FILENAME]= @p_sourcefilename
AND TGT.CHANNEL = @p_channelname
AND TGT.GEO='America'
) UPDATE CTE_AUTONUMBER_PV_AMER
SET AUTONUMBER = AUTONUMBER_UPDATE
结果是:
Autonumber ProductSKU Quantity
--------- ---------- --------
ABCD123 00001597 42
ABCD124 00001600 42
ABCD125 00001597 35
ABCD126 00001600 35
ABCD127 00001597 39
ABCD128 00001600 39
此处的“123”(@PrevOrderID) 来自之前的文件。
我想得出以下结果:
Autonumber ProductSKU Quantity
--------- ---------- --------
ABCD123 00001597 42
ABCD123 00001600 42
ABCD124 00001597 35
ABCD124 00001600 35
ABCD125 00001597 39
ABCD125 00001600 39
产品 SKU:00001597 和 00001600 将是常量值。
如何更改代码以获得此结果?
TIA :)
将您的 ORDER BY (RECORDSEQ )
更改为 ORDER BY (<column with Quantity in your sample>)
我得到了答案:)
使用 row_number 而不是 Dense_rank:
查询更改
, 'ABCD'+CAST(@PrevOrderID+ROW_NUMBER()OVER(PARTITION BY PRODUCTSKU ORDER BY (RECORDSEQ )) AS NVARCHAR(MAX)) AS AUTONUMBER_UPDATE
我有一个 SSIS 包,它在 backend.I 中有存储过程提要,必须为此 ChannelName 派生自动编号逻辑。 我当前的代码是:
IF @p_channelname ='ABCD'
BEGIN
;WITH CTE_AUTONUMBER_PV_AMER AS
(SELECT RECORDSEQ
, 'ABCD'+CAST(@PrevOrderID+DENSE_RANK()OVER(ORDER BY (RECORDSEQ )) AS NVARCHAR(MAX)) AS AUTONUMBER_UPDATE
, AUTONUMBER
FROM IC_CTXS_TRANSACTION_SOURCEFEED TGT
WHERE TGT.[INTERFACE NAME] =@p_interface
AND TGT.[FILENAME]= @p_sourcefilename
AND TGT.CHANNEL = @p_channelname
AND TGT.GEO='America'
) UPDATE CTE_AUTONUMBER_PV_AMER
SET AUTONUMBER = AUTONUMBER_UPDATE
结果是:
Autonumber ProductSKU Quantity
--------- ---------- --------
ABCD123 00001597 42
ABCD124 00001600 42
ABCD125 00001597 35
ABCD126 00001600 35
ABCD127 00001597 39
ABCD128 00001600 39
此处的“123”(@PrevOrderID) 来自之前的文件。
我想得出以下结果:
Autonumber ProductSKU Quantity
--------- ---------- --------
ABCD123 00001597 42
ABCD123 00001600 42
ABCD124 00001597 35
ABCD124 00001600 35
ABCD125 00001597 39
ABCD125 00001600 39
产品 SKU:00001597 和 00001600 将是常量值。
如何更改代码以获得此结果?
TIA :)
将您的 ORDER BY (RECORDSEQ )
更改为 ORDER BY (<column with Quantity in your sample>)
我得到了答案:) 使用 row_number 而不是 Dense_rank:
查询更改
, 'ABCD'+CAST(@PrevOrderID+ROW_NUMBER()OVER(PARTITION BY PRODUCTSKU ORDER BY (RECORDSEQ )) AS NVARCHAR(MAX)) AS AUTONUMBER_UPDATE