Christoph-MG 0 Geschrieben 6. April 2016 Melden Geschrieben 6. April 2016 Hallo Zusammen, Ich muss euch um Hilfe bitten. Ich bin mit meinem SQL Latein am Ende und das ist zugegeben noch nicht so groß, aber ich weiss nicht genau wie ich das noch anderes suchen soll, im Internet. Entschuldigt die Form mit den Tabellen, aber eigenfügen hat noch geklappt. Die Vorschau war dann fürn A...... Ich habe zwei Tabellen, diese hier heißt arpreis, die Felder wie die Überschriften Artikelnummer Preis VonDatum12300534 420 01.01.201612300534 430 01.02.201612300534 440 01.03.201612300535 845 01.01.201612300535 850 01.02.201612300536 1795 01.01.201612300536 1800 01.02.2016 Aus dieser hole ich mir die jüngsten Werte und schreibe sie in eine andere Tabelle per: Insert INTO Kundenpreisaktualisierung (Artikelnummer, Preis1neu, vonDatum) SELECT A.Artikelnummer, A.Preis as Preis1neu, a.VondatumFROM arpreis As A INNER JOIN (SELECT B.Artikelnummer, Max(B.vonDatum) As [Max-Datum] FROM arpreis As B GROUP BY B.Artikelnummer) As C ON A.Artikelnummer = C.Artikelnummer And A.vonDatum = C.[Max-Datum] where A.preistyp ='G' and Typnummer ='1' Artikelnummer Preis1alt Preis1neu Prozent VonDatum 12300534 440 01.03.2016 12300535 850 01.02.201612300536 1800 01.02.2016 Jetzt müssen aus der Arpreis Tabelle (oben) die jeweils zweit jüngsten Werte dazu. Das ist nur ein Teil der Tabelle, die wird noch mit vielen Daten gefüllt. es geht aber immer um den jüngsten und den zweitjüngsten Wert. Artikelnummer Preis VonDatum12300534 420 01.01.201612300534 430 01.02.201612300534 440 01.03.201612300535 845 01.01.201612300535 850 01.02.201612300536 1795 01.01.201612300536 1800 01.02.2016 Mit der Abfrage erwische ich leider alle älteren, nicht nur den einen zweit jüngsten: select * From arpreis as Aright outer Join Kundenpreisaktualisierung as apON Ap.artikelnummer = a.artikelnummer where a.preistyp ='G' and a.vondatum < (select top 1 max(vondatum) from arpreis where preistyp ='G' and artikelnummer = a.artikelnummer) Artikelnummer VonDatum Preis Artikelnummer_1 Preis1neu vonDatum_112300534 01.01.2016 420 12300534 440 01.03.201612300534 01.02.2016 430 12300534 440 01.03.201612300535 01.01.2016 845 12300535 850 01.02.201612300536 01.01.2016 1795 12300536 1800 01.02.2016 Also fehlt mir bloss irgendwo eine weitere Eingrenzung. Kann mir jemand helfen? mit Grüßen MG
MDD 13 Geschrieben 6. April 2016 Melden Geschrieben 6. April 2016 Hallo was für einen Server verwendest du? MDD
wilgin 11 Geschrieben 7. April 2016 Melden Geschrieben 7. April 2016 (bearbeitet) Hallo, ich würde versuchen die Aufgabe mit der rank Funktion zu lösen. Also z.B.: with maxtwo as( select artikelnummer, VonDatum, rank() over (partition by artikelnummer order by VonDatum desc) as uRank from arpreis ) select * from maxtwo where uRank in (1,2) Viel Erfolg, bearbeitet 7. April 2016 von wilgin
Christoph-MG 0 Geschrieben 8. April 2016 Autor Melden Geschrieben 8. April 2016 Hallo Wilfried, das ist genau das was ich gesucht habe! Hab Vielen Dank! P.S. Weiss man, was man alles nicht weiss ?
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden