Christoph-MG 0 Geschrieben 6. April 2016 Melden Teilen 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 Zitieren Link zu diesem Kommentar
MDD 12 Geschrieben 6. April 2016 Melden Teilen Geschrieben 6. April 2016 Hallo was für einen Server verwendest du? MDD Zitieren Link zu diesem Kommentar
Christoph-MG 0 Geschrieben 6. April 2016 Autor Melden Teilen Geschrieben 6. April 2016 MS-SQL 2012 Zitieren Link zu diesem Kommentar
wilgin 11 Geschrieben 7. April 2016 Melden Teilen 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 Zitieren Link zu diesem Kommentar
Christoph-MG 0 Geschrieben 8. April 2016 Autor Melden Teilen 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 ? Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.