Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Select Abfrage -- hat jemand eine Idee





Frage

Hallo, es geht um folgenden Aufbau einer Tabelle Firma | Jahr | Monat | Umsatz | Gewinn | Beispieldatensätze können sein: Firma xyz -- 2004 -- 1 -- 1234,00 -- 56,00 Firma xyz -- 2004 -- 2 -- 567,00 -- 89,00 ... Firma xyz -- 2005 -- 1 -- 1234,00 -- 56,00 Firma xyz -- 2005 -- 2 -- 567,00 -- 89,00 ... Firma prs -- 2004 -- 1 -- 1234,00 -- 56,00 Firma prs -- 2004 -- 2 -- 567,00 -- 89,00 ... Firma prs -- 2005 -- 1 -- 1234,00 -- 56,00 Firma prs -- 2005 -- 2 -- 567,00 -- 89,00 ... ...(hat nur Datensätze in 2004) Firma abc -- 2004 -- 1 -- 1234,00 -- 56,00 Firma abc -- 2004 -- 2 -- 567,00 -- 89,00 ...(hat nur Datensätze in 2005) Firma hij -- 2005 -- 1 -- 1234,00 -- 56,00 Firma hij -- 2005 -- 2 -- 567,00 -- 89,00 ... Diese Tabelle soll transformiert in eine neue Form, nämlich: Betrieb | Monat | Umsätze aus 2004 | Umsätze aus 2005 | Gewinn aus 2004 | Gewinn aus 2005 | So daß sich als Beispieldatensatz für diese Query folgende Ausgabe ergibt: Firma xyz -- 1 -- 1234,00 -- 1234,00 -- 56,00 -- 56,00 Firma xyz -- 2 -- 567,00 -- 567,00 -- 89,00 -- 89,00 ... Firma prs -- 1 -- 1234,00 -- 1234,00 -- 56,00 -- 56,00 Firma prs -- 2 -- 567,00 -- 567,00 -- 89,00 -- 89,00 ...(hat nur Datensätze in 2004) Firma abc -- 1 -- 1234,00 -- <null> -- 56,00 -- <null> Firma abc -- 2 -- 567,00 -- <null> -- 89,00 -- <null> ... ...(hat nur Datensätze in 2005) Firma hij -- 1 -- <null> -- 1234,00 -- <null>-- 56,00 Firma hij -- 2 -- <null> -- 567,00 -- <null> -- 89,00 ... Schon ziemlich heftig. Ich lös es momentan darüber, zwei Filtertabellen zu generieren, die mir nur die Umsätze und Gewinne für 2004 in der einen Tabelle und für 2005 in der anderen Tabelle zweigen. Dann versuche ich über einen INSERT INTO und zweifachen (!) Schlüssel , nämlich für Betrieb und Monat, die Datensätze in die neue Struktur zu bekommen. Es scheint zu klappen. Aber ich weiß nicht, ob irgendwelche Fehler unterlaufen sind. Zum einen könnten Datensätze falsch zugeordnet, zum anderen einige unter den Tisch fallen sein (vorallem,w enn nur Daten für 2004 ode exklusiv oder Daten nur für 2005 exisirieren). Da bin ich aber noch am grübeln, wie sich das am besten Testen ließe. Meine Frage ist aber, ob sich diese Transormation mit EINER (!) Abfrage regeln ließe. Danke und schöne Grüße Alex

Antwort 1 von Marie

na ob die Summe der Datensätze stimmt und wenn nicht wie viele und welche verlorengegangen sind, kann man doch durch Abfragen ganz leicht durchzählen:
Datensätze insgesamt
plus Datensätze, die Umsätze aus 2004 nicht null und gleichzeitig Umsätze aus 2005 nicht null
= Summe der Datensätze aus der alten Tabelle.

Gruß Marie

Antwort 2 von Mole

Hallo Marie,

keine Ahnung, ob das so geht. Muhlmiges gefühl. Theoretsch müßte es so sein.

Ein Datensatz kann in beiden Tabellen vorkommen,
also in Umsätze_2004 und Umsätze_2005 oder nur in Tabelle Umsätze_2004 oder nur in Tabelle Umsätze_2005.

Eine weitere Möglichkeit gibt es nicht. So daß theoretisch der Test für so ausfallen müßte:

2* Datensätze aus INNER JOIN
+
Datensätze aus RIGHT OUTER JOIN
+
Datensätze aus LEFT OUTER JOIN
=
Datensätze aus alter Tabelle

Vielleicht.

mfg

Alex

Antwort 3 von Marie

habs dir doch schon geschrieben:
Datensätze insgesamt
plus Datensätze, die Umsätze aus 2004 nicht null und gleichzeitig Umsätze aus 2005 nicht null
= Summe der Datensätze aus der alten Tabelle.

musst es mir nur glauben oder nachprüfen

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: