2017-09-08 2 views
0

Unten finden Sie ein Beispiel für die SQL Server 2012-Abfrage. Wie füge ich eine zusätzliche Spalte "StaffNo" hinzu, um eine inkrementelle Ganzzahl anzuzeigen?Fügen Sie eine inkrementelle Zahl hinzu, indem Sie den Wert einer anderen Spalte vergleichen

  1. Dieses int beginnt immer mit 1, es muss nicht mit dem Namen des Mitarbeiters übereinstimmen. zum Beispiel "Joe" in dieser Abfrage läuft zeigt 1 in Mitarbeiter Nein, in der nächsten Abfrage ausgeführt könnte er 2 oder 3 oder eine andere Nummer sein.
  2. Samen Benutzer erscheinen immer gleiches Personal Nr Verschiedene Benutzer verschiedene Nr erscheinen
  3. Die Zahl sequentiell sein muss und der Zuwachs ist 1.
  4. Weil Mitarbeiter mehr als 100, so schreiben Sie nicht die Abfrage wie „ Wählen Sie case wenn staff = 'Joe' dann 1 Ende ".

meine Frage:

Staff CaseNumber 
Joe  5880  
Joe  4489 
Joe  2235 
Emily 7790 
Emily 8813 

erwartetes Ergebnis:

Staff CaseNumber StaffNo 
Joe  5880    1 
Joe  4489    1 
Joe  2235    1 
Emily 7790    2 
Emily 8813    2 

Antwort

0

Verwenden DENSE_RANK über die gesamte Tabelle, ohne partiton, und um durch den Namen des Mitarbeiters.

SELECT 
    Staff, 
    CaseNumber, 
    DENSE_RANK() OVER (ORDER BY Staff) StaffNo 
FROM yourTable; 

Demo hier:

Rextester

+0

StaffNo nicht vorhanden ist, und ich möchte, um es schaffen. Sie können StaffNo in Query nicht auswählen. – paddywide

+0

@paddywide Entschuldigung, ich habe gerade meine Anfrage getestet und ein paar kleinere Änderungen vorgenommen. Es funktioniert jetzt. –

+0

Werden verschiedene Mitarbeiter die gleichen Mitarbeiter nicht erscheinen? es scheint dichte_rank erlaubt dies geschehen. – paddywide

Verwandte Themen