SELF-JOIN
-
Hallo !
ich möchte gerne eine Tabelle mit sich selbst joinen:
Bei uns werden für jedes Lager jeden Tag Messwerte geschrieben. Die Tabelle sieht dann ca. so aus:
Monat Tag Lager Wert Arbeitstage 200609 010906 A 5 1 200609 010906 B 4 1 200609 010906 C 2 1 200609 070906 A 12 7 200609 070906 B 7 7 200609 070906 C 9 7 200609 120906 A 18 12 200609 120906 B 8 12 200609 120906 C 9 12 200609 190906 A 22 19 200609 190906 B 14 19 200609 190906 C 16 19
Ähnliche Einträge gibt es natürlich auch für die Vormonate.
Ich brauche jetzt eine Tabelle die mir für jeden Lager im aktuellen Monat den summierten und den niedrigsten Anfangsstand anzeigt.
Mein Code bisher:
SELECT tab1.Lager,tab1.Wert,tab1.monat, tab2.Wert FROM ...... WHERE tab1.monat = (select max(monat) from tab1) ORDER BY Lager, Monat
Und hier muss ich irgendeine Verknüpfung mit der Tabelle selbst einbauen damit ich dann sagen kann tab2.arbeitstage = '1'.
Kann mir da jemand einen Tip geben ??
Danke
Gawan
-
Was mir auffällt:
ich möchte gerne eine Tabelle mit sich selbst joinen
Darfst du, ist, aber überflüssig.
Guck mal nach der "GROUP BY"-Klausel.
Guck mal nach den Aggregatfunktionen "SUM" und "MIN".
Wozu nach Monat sortieren, wenn du eh danach filterst?
-
Natürlich gibts ein Self-Join und natürlich kann der Sinn machen. Hab das Beispiel nicht angeschaut, gehen tut das wie jeder andere join auch:
SELECT ... FROM table INNER JOIN table as joined_table ON joined_table.x = table.y;