Union Abfrage gruppieren/summieren: geht das direkt?

24/11/2008 - 14:06 von Franz | Report spam
Hallo Freunde

Ich habe eine Unionabfrage so etwa: (gekürzt, làuft)

SELECT CStr(DatePart("ww",[servisdeliverydate],2,1) & "/" & DatePart
("yyyy",[servisdeliverydate],2,1)) AS WeekNr, Sum(UnitPrice) AS sales,
Sum(Price DTC) AS DTC, Sum(Price LS] AS LS
FROM (ServisOrder INNER JOIN ServOrderMaterial ON
ServisOrder.ServOrderID = ServOrderMaterial.ServisOrderID) INNER JOIN
Products ON ServOrderMaterial.ProductID = Products.ProductID
UNION SELECT CStr(DatePart("ww",[servisdeliverydate],2,1) & "/" &
DatePart("yyyy",[servisdeliverydate],2,1)) AS WeekNr, Sum(UnitPrice)
AS sales, Sum(Price DTC) AS DTC, Sum(Price LS] AS LS
FROM (ServisOrder INNER JOIN ServOrderMaterialSales ON
ServisOrder.ServOrderID = ServOrderMaterialSales.ServisOrderID) INNER
JOIN Products ON ServOrderMaterialSales.ProductID = Products.ProductID
UNION SELECT CStr(DatePart("ww",[deliverydate],2,1) & "/" & DatePart
("yyyy",[deliverydate],2,1)) AS WeekNr, Sum(UnitPrice) AS sales, Sum
(Price DTC) AS DTC, Sum(Price LS] AS LS
FROM tblConsOrder INNER JOIN (tblConsOrderMaterial INNER JOIN Products
ON tblConsOrderMaterial.ProductID = Products.ProductID) ON
tblConsOrder.ConsOrderID = tblConsOrderMaterial.ConsOrderID;

Dies ergibt mir im "schlimmsten" Fall für jede "WeekNr" drei Records.
In einer 2. Abfrage gruppiere ich dann auf WeekNr und summiere die
Werte. Geht das auch direkt in der Union Abfrage?

Vielen Dank!

Gruss aus Prag

Franz

 

Lesen sie die antworten

#1 Mark Doerbandt
24/11/2008 - 14:09 | Warnen spam
Hallo, Franz,

Franz:

SELECT CStr(DatePart("ww",[servisdeliverydate],2,1) & "/" & DatePart
("yyyy",[servisdeliverydate],2,1)) AS WeekNr, Sum(UnitPrice) AS sales,
Sum(Price DTC) AS DTC, Sum(Price LS] AS LS
FROM (ServisOrder INNER JOIN ServOrderMaterial ON
ServisOrder.ServOrderID = ServOrderMaterial.ServisOrderID) INNER JOIN
Products ON ServOrderMaterial.ProductID = Products.ProductID
UNION SELECT CStr(DatePart("ww",[servisdeliverydate],2,1) & "/" &
DatePart("yyyy",[servisdeliverydate],2,1)) AS WeekNr, Sum(UnitPrice)
AS sales, Sum(Price DTC) AS DTC, Sum(Price LS] AS LS
FROM (ServisOrder INNER JOIN ServOrderMaterialSales ON
ServisOrder.ServOrderID = ServOrderMaterialSales.ServisOrderID) INNER
JOIN Products ON ServOrderMaterialSales.ProductID = Products.ProductID
UNION SELECT CStr(DatePart("ww",[deliverydate],2,1) & "/" & DatePart
("yyyy",[deliverydate],2,1)) AS WeekNr, Sum(UnitPrice) AS sales, Sum
(Price DTC) AS DTC, Sum(Price LS] AS LS
FROM tblConsOrder INNER JOIN (tblConsOrderMaterial INNER JOIN Products
ON tblConsOrderMaterial.ProductID = Products.ProductID) ON
tblConsOrder.ConsOrderID = tblConsOrderMaterial.ConsOrderID;



erwartest Du allen Ernstes von uns, das wir das mal eben so schnell
durchlesen und auch noch inhaltlich verstehen? Wenigstens formatieren
und ein wenig erklàren hàttest Du können...

Dies ergibt mir im "schlimmsten" Fall für jede "WeekNr" drei Records.
In einer 2. Abfrage gruppiere ich dann auf WeekNr und summiere die
Werte. Geht das auch direkt in der Union Abfrage?



Nein, sage ich mal. Ähnliche Fragestellungen kommen ja recht oft und
ich verstehe nicht, wo die Scheu herkommt, fuer eine Aufgabenstellung
eben /zwei/ Abfragen zu verwenden. Mit vernuenftiger Namenskonvention
sollte auch die Übersichtlichkeit nicht leiden.

Gruss - Mark

Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beitràge senden.

Ähnliche fragen