2017-06-14 2 views
1

Ich muss die Vorkommensnummer jedes Dokumenttyps festlegen und nach Dokumentnamen sortieren. Wie wäre es mit MS SQL 2008?Festlegen von Vorkommen in SQL

hier sind die Szenarien:

  1. Wenn der Dokumenttyp einzigartig ist, aktualisieren Sie die Elementnummer des Dokuments Namen als 001.
  2. wenn der Dokumenttyp nicht eindeutig zuzuordnen, überprüfen Sie die 6 letzte Ziffer auf das Recht des Dokumentnamens und vergleichen Sie es mit dem anderen Dokumentnamen mit demselben Dokumenttyp. Bitte beachten Sie die aktuelle Tabelle gegen die erwartete Ausgabe.

Aktuelle Tabelle.

EE. Number DocumentType Document name     
406453  Transfer  ITransfers 20170531 154323  
406453  Offer Letter Amendments 20170601 092848    
406453  Offer Letter Amendments 20170601 092500  
406433  Misc   Misc. 20170531 153348 
406453  Offer Letter Amendments 20170601 092735 

Erwartete Ausgabe

EE. Number DocumentType Document name     occurrence number 
406453  Transfer  ITransfers 20170531 154323 001 
406433  Misc   Misc. 20170531 153348   001 
406453  Offer Letter Amendments 20170601 092735 001 
406453  Offer Letter Amendments 20170601 092848 002 
406453  Offer Letter Amendments 20170601 092500 003 
+1

Welche rdbms sind mit Sie? –

+0

Ich benutze MS SQL 2008. – yope

Antwort

1

Wenn ich richtig verstehe, wollen Sie row_number():

select t.*, 
     row_number() over (partition by document_type 
          order by right(document_name, 6) 
         ) as occurrence_number 
from t; 

Dies gibt eine ganze Zahl, keinen String mit führenden Nullen. Sie können Zahlen in Strings in jeder Datenbank konvertieren; Die genaue Funktionalität hängt von der verwendeten Datenbank ab.

EDIT:

Sie können diese konvertieren zu einem links gepolstertem string:

select t.*, 
     right('000' + 
      cast(row_number() over (partition by document_type 
            order by right(document_name, 6) 
            ) as varchar(255) 
       ) as occurrence_number 
from t; 
+0

Hallo, Es ist nicht die Zeilennummer. aber ich muss die Nummer des Vorkommens basierend auf dem Dokumenttyp und dem Dokumentennamen festlegen. – yope

+0

gut, das funktioniert! Vielen Dank! – yope

+0

Wie fügen Sie 00 auf dem Präfix von row_number() hinzu? Ich habe '00' + row_number() versucht, funktioniert aber nicht. – yope

Verwandte Themen