2016-06-16 16 views
0

Ich habe ein SSIS-Paket, das Stored Procedure-Feed im Back-End hat. Ich muss die automatische Nummernlogik für diesen ChannelName ableiten. Mein aktueller Code ist:Ableiten von Autonummer basierend auf Wert aus einer anderen Spalte in SQL

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] [email protected]_interface 
            AND TGT.[FILENAME]= @p_sourcefilename 
             AND TGT.CHANNEL = @p_channelname 
             AND TGT.GEO='America' 
       ) UPDATE CTE_AUTONUMBER_PV_AMER 
         SET AUTONUMBER = AUTONUMBER_UPDATE 

Das Ergebnis ist:

Autonumber ProductSKU Quantity 
--------- ---------- -------- 
ABCD123  00001597  42 
ABCD124  00001600  42 
ABCD125  00001597  35 
ABCD126  00001600  35 
ABCD127  00001597  39 
ABCD128  00001600  39 

Hier ist die '123' (@ PrevOrderID) aus einer früheren Datei.

Ich möchte folgende Ergebnisse ableiten:

Autonumber ProductSKU Quantity 
--------- ---------- -------- 
ABCD123  00001597  42 
ABCD123  00001600  42 
ABCD124  00001597  35 
ABCD124  00001600  35 
ABCD125  00001597  39 
ABCD125  00001600  39 

Das Produkt SKUs: 00001597 und 00001600 werden konstante Werte sein.

Wie kann ich den Code ändern, um dieses Ergebnis zu erhalten?

TIA :)

+1

Beispieleingabe würde das viel leichter verständlich machen. –

+0

Ja, wir müssen die Startdaten sehen (besonders die RECORDSEQ-Spalte), um zu helfen. –

+0

RecordSeq ist nur die Sequenz Nr. Von 1 – Aiswarya

Antwort

0

ich die Antwort :) bekam Gebraucht row_number statt DENSE_RANK:

Abfrage ändern

, 'ABCD' + CAST (@ PrevOrderID + ROW_NUMBER() OVER (PARTITION BY PRODUCTSKU ORDER BY (RECORDSEQ)) ALS NVARCHAR (MAX)) AS AUTONUMBER_UPDATE

1

Änderung Ihrer ORDER BY (RECORDSEQ)-ORDER BY (<column with Quantity in your sample>)

+0

Wie kann ich die Abfrage ändern, um AUtumber basierend auf ProductSKU Werte und nicht Quantity ?? – Aiswarya

+0

make 'order by ', oder ich verstehe Ihre Frage nicht ... – xdd

+0

Die ProductSKU Werte sind konstant: 00001597, 00001600; Wenn ich es schaffe - nach (Productsku) zu sortieren wird sich die Autonummern richtig wiederholen ?? – Aiswarya