我有一个SSIS软件包,该软件包在后端中存储了过程。 我当前的代码是:
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(productsku order订单(recordseq)的分区)为nvarchar(max)),为autonumber_update