集團這是我的樣本數據:SQL服務器 - 通過邏輯
Autonumber ProductSKU Quantity
--------- ---------- --------
ABCD123 00001597 42
ABCD123 00001600 42
ABCD124 00001597 35
ABCD124 00001600 35
ABCD125 00001597 39
ABCD125 00001600 39
我不得不得出基礎上,Quantity
和ProductSKU
的Autonumber
列值。當Quantity
& ProductSKU
變化時,Autonumber
應該改變。 我該如何做到這一點?我有邏輯增加Autonumber
,但與邏輯組混淆。請好心幫助我。
EDIT(從OP在答案部分交複製):
我有計算自動編號,其被遞增爲每一行的邏輯。
查詢:
IF @p_channelname ='ABCD'
BEGIN
;WITH CTE_AUTONUMBER_ABCD_AMER AS
(SELECT RECORDSEQ
,'ABCD'+CAST(@PrevOrderID+DENSE_RANK()OVER(ORDER BY (RECORDSEQ)) AS NVARCHAR(MAX)) AS AUTONUMBER_UPDATE
, AUTONUMBER
, LINENUMBER
, DENSE_RANK()OVER(ORDER BY (RECORDSEQ)) AS LINENUMBER_UPDATE
FROM TABLE1 TGT
WHERE TGT.[INTERFACE NAME] [email protected]_interface
AND TGT.[FILENAME]= @p_sourcefilename
AND TGT.CHANNEL = @p_channelname
AND TGT.GEO='America'
) UPDATE CTE_AUTONUMBER_ABCD_AMER
SET AUTONUMBER = AUTONUMBER_UPDATE,
LINENUMBER=LINENUMBER_UPDATE
目前自動編號值是:
Autonumber ProductSKU Quantity
--------- ---------- --------
ABCD123 00001597 42
ABCD124 00001600 42
ABCD125 00001597 35
ABCD126 00001600 35
ABCD127 00001597 39
ABCD128 00001600 39
我想生成自動編號值:
Autonumber ProductSKU Quantity
--------- ---------- --------
ABCD123 00001597 42
ABCD123 00001600 42
ABCD124 00001597 35
ABCD124 00001600 35
ABCD125 00001597 39
ABCD125 00001600 39
這是當前查詢: ; WITH CTE_AUTONUMBER_EP IC_AMER AS (SELECT RECORDSEQ ,CASE WHEN @P_CHANNELNAME ='Epic的 THEN'Epic的+ CAST(CAST(自動編號AS INT)AS NVARCHAR(MAX))
END AS AUTONUMBER_UPDATE ,自動編號 ,LINENUMBER ,DENSE_RANK ()OVER(ORDER BY(RECORDSEQ))AS LINENUMBER_UPDATE 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 ='美國' AND ISNUMERIC(CAST(AUTONUMBER AS INT))= 1 和自動編號IS NOT NULL )UPDATE CTE_AUTONUMBER_EPIC_AMER SET自動編號= AUTONUMBER_UPDATE, LINENUMBER = LINENUMBER_UPDATE
我怎麼可以對這個邏輯不干擾查詢的結構?
SQL表本質上是無序的。您需要一個指定行的排序的列。 –
除了訂單問題,我不明白你的邏輯。根據你的數據,每一行的'autonumber'值都不會增加,因爲每行都有與前一行不同的'ProductSKU/Quantity'值?考慮發佈迄今爲止已經構建的SQL。 – sstan
這沒有什麼'自動'和'數字'的一點點。你需要顯示你的代碼,並澄清你的預期結果。, –