2016-05-16 13 views
0

Meine Daten ist so -berechnen Rang Muster ohne Mindestbestellwert

enter image description here

Sie 3 Spalten überprüfen, jil_equipment_id, req_group, Operanden. Basierend auf diesen 3 Spalten muss ich eine neue "Patern" Spalte generieren.

Die Patern-Spalte ist ein Patern und beginnt bei 2 und wird für jede wiederholte Kombination von jil_equipment_id, req_group, operand um 1 erhöht.

Die endgültigen Daten werden wie folgt aussehen. enter image description here

Bitte schlagen Sie mir einen möglichen Ansatz vor. Ich kann die Funktion RANK()/DENSE_RANK() nicht verwenden.

+1

Ich entfernte die externen Datenbank-Tags. Fügen Sie das Tag für die von Ihnen verwendete Datenbank hinzu. Erklären Sie auch, warum Sie die Ranking-Funktionen nicht verwenden können. –

+0

ich benutze SQL Server –

+0

Kann Rank Funktionen nicht verwenden, sie arbeiten auf ASC/DESC Werte, mein Muster basiert auf 3 verschiedenen Spalten. –

Antwort

0
select *,Row_Number() over(partition by jil_equipment_id,req_group,operand order by jil_equipment_id,req_group,operand) + 1 as pattern 
from tab 

können Sie row_number() Funktion dafür verwenden.

+0

Funktioniert nicht. jil_equipment_id, req_group, operand befinden sich nicht in einer ASC/DESC-Reihenfolge. Es ist wie für jede jil_equipment_id, wir müssen jede req_group für mehrere Operanden überprüfen und entsprechend Muster erstellen. Wenn es mehr als 2 Operanden für jede jil_equipment_id gibt, sollte req_group um 1 erhöht werden, sonst bleibt es 2 –

+0

Partition auch verwenden –

1

Sie können row_number() verwenden. Sie möchten auch die partition by verwenden:

select t.*, 
     (1 + row_number() over (partition by jil_equipment_id, req_group, operand 
           order by content_id 
          ) 
     ) as pattern 
from t; 
+0

Danke, es hat funktioniert. PS - Wie dumm ich bin jetzt nicht zu Content_id Spalte sehen –