Supportnet / Forum / Datenbanken
Abfrage
Frage
hallo zusammen, ich schon wieder,
ich habe folgende tabelle:
Artikel Location QTY
Blabla D 5
Blabla B 2
Blabla A 9
ich möchte jetzt mittels einer Abfrage folgende Tabelle erstellen
Artikel QTY_D QTY_B QTYA
Blabla 5 2 9
das geht natürlich über 4 Abfragen. Es handelt sich aber um ca 1000 Artikel und 11 Locationen.
Weiß jemand Rat?
Danke und Gruß
babypet
Antwort 1 von lorf55
Hallo babypet,
ich finde den Weg über mehrere SELECT-Anweisungen ganz ok:
wobei LocQTY deine Tabelle bezeichnet.
Aber vielleicht findet ja jemand noch was anderes (obwohl ich es mir nicht vorstellen kann, weil man immer den Ärger mit den Aggregatfunktionen hat).
Gruß
lorf
ich finde den Weg über mehrere SELECT-Anweisungen ganz ok:
SELECT LocQTY.Artikel,
(SELECT Sum(LocQTY.QTY) FROM LocQTY WHERE (LocQTY.Location="d")) AS QTY_D,
(SELECT Sum(LocQTY.QTY) FROM LocQTY WHERE (LocQTY.Location="b")) AS QTY_B,
(SELECT Sum(LocQTY.QTY) FROM LocQTY WHERE (LocQTY.Location="a")) AS QTY_A
FROM LocQTY
GROUP BY LocQTY.Artikel;wobei LocQTY deine Tabelle bezeichnet.
Aber vielleicht findet ja jemand noch was anderes (obwohl ich es mir nicht vorstellen kann, weil man immer den Ärger mit den Aggregatfunktionen hat).
Gruß
lorf
Antwort 2 von babypet
Hi Iorf,
der Ansatz liest sich gut, allerdings wird zu jedem Arttikel nun die Gesamtsumme QTY aller vorhandenen Artikel angzeigt und nicht die tatsächliche QTY. Ein eperimentieren mit MAX und ErsterWert führte zu keinm Ergebnis. Vielleicht hast Du ja noch eine Idee.
Danke und Gruß
babypet
der Ansatz liest sich gut, allerdings wird zu jedem Arttikel nun die Gesamtsumme QTY aller vorhandenen Artikel angzeigt und nicht die tatsächliche QTY. Ein eperimentieren mit MAX und ErsterWert führte zu keinm Ergebnis. Vielleicht hast Du ja noch eine Idee.
Danke und Gruß
babypet
Antwort 3 von lorf55
Hallo babypet,
unter der Voraussetzung, dass in keiner Location doppelte QTYs auftreten, geht auch das:
Sonst gibts den Fehler, dass von einer Unterabfrage nur 1 Datensatz zurückgegeben werden kann.
Besser ist schon die Summen-Variante:
Die Abfrage aus AW1 ist falsch. Ich glaube, jetzt ist es besser.
Gruß
lorf
unter der Voraussetzung, dass in keiner Location doppelte QTYs auftreten, geht auch das:
SELECT DISTINCT LocQTY.Artikel,
(SELECT L.QTY FROM LocQTY as L WHERE ( (L.Location="d") AND (L.Artikel= LocQTY.Artikel) )) AS QTY_D,
(SELECT L.QTY FROM LocQTY as L WHERE ( (L.Location="b") AND (L.Artikel= LocQTY.Artikel) )) AS QTY_B,
(SELECT L.QTY FROM LocQTY as L WHERE ( (L.Location="a") AND (L.Artikel= LocQTY.Artikel) )) AS QTY_A
FROM LocQTY;Sonst gibts den Fehler, dass von einer Unterabfrage nur 1 Datensatz zurückgegeben werden kann.
Besser ist schon die Summen-Variante:
SELECT [LocQTY].[Artikel],
(SELECT sum(L.QTY) FROM LocQTY as L WHERE ( (L.Location="d") AND (L.Artikel= LocQTY.Artikel) )) AS QTY_D,
(SELECT sum(L.QTY) FROM LocQTY as L WHERE ( (L.Location="b") AND (L.Artikel= LocQTY.Artikel) )) AS QTY_B,
(SELECT sum(L.QTY) FROM LocQTY as L WHERE ( (L.Location="a") AND (L.Artikel= LocQTY.Artikel) )) AS QTY_A
FROM LocQTY
GROUP BY [LocQTY].[Artikel];Die Abfrage aus AW1 ist falsch. Ich glaube, jetzt ist es besser.
Gruß
lorf
Antwort 4 von babypet
Hi Iorf
VOLL SUUUUUUUPER.
Es funzt undich bin Dir tausendmal dankbar
Gruß
babypet
VOLL SUUUUUUUPER.
Es funzt undich bin Dir tausendmal dankbar
Gruß
babypet

