zweitgrößter Wert je Artikelnummer

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!
18 Juni 2014
409
13
18
32
#1
Hallo Leute,

ich versuche gerade, die vorletzte Bestellung pro Artikelnummer aus der Datenbank zu ziehen, weiß aber nicht wie. Mit einem Subselect kann ich ja immer nur eine Spalte ausgeben, wie könnte ich das dann realisieren?

Hier mal mein bisherige, nicht funktionierender Code:
Code:
SELECT
vk_beleg_pos.artikelnr,
Max(vk_beleg.erfasst_am) AS 'Max von erfasst_am'

FROM
hs.vk_beleg vk_beleg,
hs.vk_beleg_pos vk_beleg_pos

WHERE
vk_beleg.id = vk_beleg_pos.beleg_id
AND (
    (vk_beleg.kl_nr=1111001)
    AND
    (vk_beleg_pos.positionsnr>0)
    AND
    Max(vk_beleg.erfasst_am) < (
        SELECT
        Max(vk_beleg.erfasst_am)
        FROM
        hs.vk_beleg vk_beleg,
        hs.vk_beleg_pos vk_beleg_pos
        WHERE
        vk_beleg.id = vk_beleg_pos.beleg_id AND ((vk_beleg.kl_nr=1111001) AND (vk_beleg_pos.positionsnr>0))
    )

GROUP BY vk_beleg_pos.artikelnr
Folgendes Ergebnis möchte ich realisieren:
Code:
Artikelnummer         Bestellung (vorletzte)
SPH0001                    01.01.2018
SPH0002                    02.02.2018
 

Fred2017

Neues Mitglied
9 März 2017
12
3
3
63
#2
Also nochmal, war verwirrt ob der obenstehenden Daten: Es müsste wesentlich einfach gehen. Allerdings ist es wichtig, in welchem Kontext das ganze passiert.
 
Zustimmungen: Bourbon
18 Juni 2014
409
13
18
32
#3
Also die Abfrage erfolgt jetzt einmalig, evtl. 1-2 im Monat, aber definitiv nicht häufiger.

Folgenden Hintergrund hat es:
Für unsere derzeitigen und zukünftigen Bestellungen wollen wir wissen, ob es sich um einen wiederkehrenden oder frischen Artikel handelt. Sprich ich brauch einfach die Info, wann die letzte Bestellung war. Müsste ja eigentlich mit max gehen, ABER dann sehe ich ja nur die letzte Bestellung und das ist die aktuelle. Ich brauch ja die vorherige um zu wissen, wie viel Zeit seit der letzten Bestellung vergangen ist.

Im besten Fall habe ich die Daten so:
Code:
Artikel --- akt. Bestellung --- vorl. Bestellung
SPH001 --- 03.03.2018 --- 06.05.2016
 

Fred2017

Neues Mitglied
9 März 2017
12
3
3
63
#4
Hab jetzt im Moment keine Zeit, das, was mir vorschwebt, kurz zu implementieren und zu testen, mache das in ca. 2,5 Std.
Mein Gedanke ist, eine kleine Anwendung zu schreiben, weil es allein mit Abfragen sehr schnell unheimlich tricky wird. Ich nehme an, daß das ganze innerhalb einer Web-Anwendung stattfindet, so daß ich dir das ganze dann mit "Blinddaten" unter php erstellen würde. Ist das ok?
 
Zustimmungen: Bourbon
18 Juni 2014
409
13
18
32
#5
Tatsächlich läuft das eher über das MS Query Tool via Excel :rolleyes:
Daher bräuchte ich eher ein SQL-Befehl. Okay, anscheinend ist es doch schwieriger als ich dachte.
Ich hatte die Hoffnung, dass man das ganz leicht via SQL erledigen kann.
 

Fred2017

Neues Mitglied
9 März 2017
12
3
3
63
#6
Halt stopp. Ich arbeite nicht mit dem Excel-Query-Tool, deswegen muß ich fragen: Das verwendet doch wahrscheinlich via VBA die gleichen Objekte, hier eigentlich nur das Recordset-Objekt wie Access. Dann könnte man die Anwendung auch sofort in VBA schreiben. Außerdem gäbe es dann noch die Möglichkeit, den Teil, der pro Kundennummer die 2.-letzte Bestellung ermittelt in einer Funktion zu kapseln und dann in der äußeren Abfrage diese direkt einzubauen. Das würde die Sache vereinfachen. Wenn du einverstanden bist, mache ich das dann nachher mit VBA für Access, dann würdest du eine Art Vorlage für deine Implementierung in Excel haben.
Ich muß dich nur um Verständnis bitten, daß ich mich da jetzt nicht in das Excel-Query-Tool einarbeiten kann.

Es gäbe noch eine andere Lösung: Wende dich an das Forum "office-loesung.de" Poste deine Frage dort aber zunächst im Access-Forum unter .... Falls es dort nicht hinpaßt, wird ein Admin es entsprechend verschieben. Dort gibt es auch Abfrage-Cracks, die dir eine Lösung rein mit Abfragen bauen!

Gib mir aber bitte Bescheid, wie du weiter vorgehen wirst, dann kann ich mir die Arbeit heute nachmittag evtl. ersparen. Registriere dich dort auch mit dem gleichen Nick wie hier, dann kann ich mir das dort auch mal anschauen und evtl. eingreifen.

Achtung: Edit!
Ich habe dir die falsche Adresse vom office-Forum gegeben, die richtige ist
http://www.office-loesung.de/p/viewforum.php?f=167 (habe die falsche oben rausgenommen)

Das ganze hängt damit zusammen, daß die seit 2014 (leider immernoch) mit einem provisorischen Forum für neue Fragen arbeiten, weil sie nach einem Diebstahl von User-Daten das alte einfrieren mußten.
 
Zuletzt bearbeitet:
Zustimmungen: Bourbon
18 Juni 2014
409
13
18
32
#8
Wow Fred2017, selten sieht man so viel Motivation! Herzlichen Dank schon mal dafür!
Nee du brauchst dir da wirklich nicht die Arbeit machen, das wäre wie mit Kanone auf Spatzen schießen ;)
Wenn es keinen schnellen und leichten Weg gibt, dann setz ich das einfach mit zwei einzelnen Abfragen (1 = max, 2 = alle Bestellung die nicht älter als zwei Jahre sind).

Das soll wirklich nur eine kleine Geschichte werden, die bald (da neues ERP-System) eh nicht mehr genutzt wird.

Ja bei Office-Lösungen bin ich bereits registriert und kenne den Umstand mit dem provisorischem Forum. Hoffentlich wird das irgendwann einmal behoben.

Zum Query Tool: das ist wirklich äußerst primitiv. Du hinterlegst nur einen SQL-Befehl und dann wirft es dir die Daten einfach raus. Plump und einfach! :-)
 

Fred2017

Neues Mitglied
9 März 2017
12
3
3
63
#9
Wow Fred2017, selten sieht man so viel Motivation! Herzlichen Dank schon mal dafür!
Ich glaube, das mißverstehst du. Ich handle nur nach dem Grundsatz: "Richtig oder gar nicht!" Jedenfalls versuche ich es. Unter einem Helfersyndrom leide ich jedenfalls nicht. ;-)
...
Das soll wirklich nur eine kleine Geschichte werden, die bald (da neues ERP-System) eh nicht mehr genutzt wird.
Darf ich neugierig fragen, um welches ERP-System es sich dann handeln wird?
Ja bei Office-Lösungen bin ich bereits registriert und kenne den Umstand mit dem provisorischem Forum. Hoffentlich wird das irgendwann einmal behoben.
Glaube nicht...
Zum Query Tool: das ist wirklich äußerst primitiv. Du hinterlegst nur einen SQL-Befehl und dann wirft es dir die Daten einfach raus. Plump und einfach! :)
Ja, aber genau da würde das Problem ja dann anfangen, die könnte nämlich dann nicht mit benutzerdefinierten Funktionen arbeiten, selbst, wenn du sie als Excel-Add-In gespeichert hättest. Aber gut, das hat sich ja dann erledigt.

Gruß

F.