none
Durchnummerieren von 2 Spalten RRS feed

  • Frage

  • In einer Abfrage habe ich eine ID Nummer anhand derer ich eine laufende Nummer erstelle.

    Dies funktioniert auch mit der Abfrage:

    ROW_NUMBER() OVER(PARTITION BY dbo.ContactsPhone.contact ORDER BY dbo.PhoneTypes.name DESC) AS Nummer

    ich brauche aber eine Durchnummerierung wenn beide Werte, also  nicht nur die ID  dbo.ContactsPhone.contact sondern auch zusätzlich der Name dbo.PhoneTypes.name  gleich ist. Also Beispiel:

    123 Tel Laufende Nr. 1

    123 Fax Laufende Nr. 1

    123 Tel Laufende Nr. 2

    234 Tel Laufende Nr. 1

    ....

    Hat jemand eine Idee wie ich die 2 Spalten in eine laufende Nummer bekomme ???

    VLG Ingo Rost


    Ingo Rost popcorn@radiomagazin.de

    Mittwoch, 25. November 2015 12:56

Antworten

  • Hallo Ingo,

    die laufende Nummer wird über die PARTITION Funktion bereits gebildet, die musst Du nur um das zusätzliche Feld erweitern.

    ROW_NUMBER() OVER(PARTITION BY dbo.ContactsPhone.contact, dbo.PhoneTypes.name ORDER BY dbo.PhoneTypes.name DESC) AS Nummer


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Mittwoch, 25. November 2015 13:25

Alle Antworten

  • Hallo Ingo,

    die laufende Nummer wird über die PARTITION Funktion bereits gebildet, die musst Du nur um das zusätzliche Feld erweitern.

    ROW_NUMBER() OVER(PARTITION BY dbo.ContactsPhone.contact, dbo.PhoneTypes.name ORDER BY dbo.PhoneTypes.name DESC) AS Nummer


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Mittwoch, 25. November 2015 13:25
  • Hallo,

    ich würde die beiden Werte in eine Zeichenkette konvertiren und verknüpfen. Nach dieser Zeichenkette würde ich dann sortieren. Die Verknüpfung sollte in einer Unterabfrage stattfinden, die eine Spalte präperiert. 

    SELECT ArtikelNr, Artikelbezeichnung, ROW_NUMBER() OVER(PARTITION BY SortierSpalte ORDER BY SortierSpalte) as SortierSpalte FROM
    (
    SELECT art.ArtikelNr, bes.Artikelbezeichnung, 
        CONVERT(varchar(50),art.ArtikelNr) + CONVERT(varchar(50), bes.Artikelbezeichnung) as SortierSpalte 
        FROM artikel art INNER JOIN bestelldetails bes ON art.ArtikelNr = bes.ArtikelNr
    ) BASIS

    Viele Grüße

    Max Sickermann


    Mittwoch, 25. November 2015 13:39