2017-12-13 2 views
0

Ich versuche, eine SQL-Abfrage zu schreiben, die meine Tabelle abfragen wird, dann in der Ergebnismenge für eine der Spalten einen anderen, inkrementierenden Wert zurückgeben, aber für Duplikate würde es habe den gleichen Wert. Ich habe Probleme, die richtigen Worte zu finden, um es zu erklären, aber ein Beispiel sollte es aufklären. Hier ist ein Beispiel-Tabelle:SQL-Gruppe doppelte Werte und Rückgabe als ein neuer Wert

Date   ActionTaken   UserID 

2017-12-5  Update    1 
2017-12-6  Add     1 
2017-12-6  Delete    1 
2017-12-7  Update    1 
2017-12-8  Update    1 
2017-12-8  Delete    1 

Und wenn ich meine Abfrage tun, würde ich mit dem Ergebnis zufrieden sein, so etwas wie:

Date   ActionTaken   UserID 

Day 1   Update    1 
Day 2   Add     1 
Day 2   Delete    1 
Day 3   Update    1 
Day 4   Update    1 
Day 4   Delete    1 

ActionTaken und UserID Daten sind irrelevant, ich möchte nur zu in der Lage sein, nach Werten in der Spalte Date zu gruppieren, und ihnen dann einen neuen Wert mit einer inkrementierenden Nummer zuzuweisen, die Zeilen mit dem gleichen Date-Wert gruppiert, um die gleiche Nummer zu haben.

Antwort

1

Ich glaube, Sie dense_rank() wollen:

select dense_rank() over (order by date) as seqnum, 
     . . . 
from t; 

Diese eine Zahl zurückgibt. Sie können in Ihrer Freizeit date vor der Nummer hinzufügen.

+0

Perfekt! Vielen Dank. – ctoph

Verwandte Themen