UNION Abfrage mit Pivot Abfragen

17/10/2009 - 18:34 von Heinz Gimmler | Report spam
Hallo NG,

ich habe zwei Kreuztabellenabfragen die ich mit einer Union-Anweisung
zusammen baue und in einem Grid zur Anzeige bringe.

SQL der ersten Abfrage:

TRANSFORM Sum(qry_Produkte_SummePreis_Anzahl.SummePreis) AS WERT SELECT
qry_Produkte_SummePreis_Anzahl.GUID_Produkte, 'Preis' AS Anzeige from
qry_Produkte_SummePreis_Anzahl WHERE
(((qry_Produkte_SummePreis_Anzahl.GUID_Produkte)"{81179A3F-BFD9-4D19-8F92-00339777C8D1}" )) GROUP BY
qry_Produkte_SummePreis_Anzahl.GUID_Produkte, 'Preis' PIVOT
Format([DatumErfasst],'mmm') IN('Nov', 'Dez', 'Jan', 'Feb', 'Màr',
'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt');

SQL der zweiten Abfrage:

TRANSFORM Sum(qry_Produkte_Produktplaetzte.Anzahl) AS WERT SELECT
qry_Produkte_Produktplaetzte.GUID_Produkte,
qry_Produkte_Produktplaetzte.Produktplatz AS Anzeige from
qry_Produkte_Produktplaetzte WHERE
(((qry_Produkte_Produktplaetzte.GUID_Produkte)"{81179A3F-BFD9-4D19-8F92-00339777C8D1}" )) GROUP BY
qry_Produkte_Produktplaetzte.GUID_Produkte,
qry_Produkte_Produktplaetzte.Produktplatz PIVOT
Format([DatumErfasst],'mmm') In('Nov', 'Dez', 'Jan', 'Feb', 'Màr',
'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt');


Die darauf ausgeführte Unionabfrage sieht so aus:

Select * from AbfrageEins
UNION
Select * from AbfrageZwei;

Das Ergebnis ist wie gewünscht!


Da die beiden Abfragen im Code zusammengestellt werden, ich muss die
letzten zwölf Monate auswerten und nur das ausgewàhlte Produkt anzeigen,
habe ich das so versucht:

TRANSFORM Sum(qry_Produkte_SummePreis_Anzahl.SummePreis) AS WERT SELECT
qry_Produkte_SummePreis_Anzahl.GUID_Produkte, 'Preis' AS Anzeige from
qry_Produkte_SummePreis_Anzahl WHERE
(((qry_Produkte_SummePreis_Anzahl.GUID_Produkte)"{81179A3F-BFD9-4D19-8F92-00339777C8D1}" )) GROUP BY
qry_Produkte_SummePreis_Anzahl.GUID_Produkte, 'Preis' PIVOT
Format([DatumErfasst],'mmm') IN('Nov', 'Dez', 'Jan', 'Feb', 'Màr',
'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt')
UNION
TRANSFORM Sum(qry_Produkte_Produktplaetzte.Anzahl) AS WERT SELECT
qry_Produkte_Produktplaetzte.GUID_Produkte,
qry_Produkte_Produktplaetzte.Produktplatz AS Anzeige from
qry_Produkte_Produktplaetzte WHERE
(((qry_Produkte_Produktplaetzte.GUID_Produkte)"{81179A3F-BFD9-4D19-8F92-00339777C8D1}" )) GROUP BY
qry_Produkte_Produktplaetzte.GUID_Produkte,
qry_Produkte_Produktplaetzte.Produktplatz PIVOT
Format([DatumErfasst],'mmm') In('Nov', 'Dez', 'Jan', 'Feb', 'Màr',
'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt');

Dabei bekomme ich den Fehler:
Syntaxfehler in Transform-Anweisung

Habt Ihr eine Idee wie man das regeln kann?

Liebe Grüße
Heinz
 

Lesen sie die antworten

#1 Josef Poetzl
17/10/2009 - 19:00 | Warnen spam
Hallo!

Heinz Gimmler schrieb:
[...]
Select * from AbfrageEins
UNION
Select * from AbfrageZwei;

Das Ergebnis ist wie gewünscht!

Da die beiden Abfragen im Code zusammengestellt werden, ich muss die
letzten zwölf Monate auswerten und nur das ausgewàhlte Produkt anzeigen,
habe ich das so versucht:

TRANSFORM Sum(qry_Produkte_SummePreis_Anzahl.SummePreis) AS WERT SELECT


[...]
UNION
TRANSFORM Sum(qry_Produkte_Produktplaetzte.Anzahl) AS WERT SELECT


[...]

Dabei bekomme ich den Fehler:
Syntaxfehler in Transform-Anweisung

Habt Ihr eine Idee wie man das regeln kann?



2 Kreuztabellen-SQL-Anweisungen können nicht mittels Union
zusammengefasst werden. Dafür müsstest du die einzelnen
SQL-Anweisungen in gespeicherten Abfragen unterbringen.

Oder du versuchst es so:
Transform
Sum(X.Wert)
Select
...
from
(
Select Sum(...) As Wert, .. from qry_Produkte_SummePreis_Anzahl
UNION ALL
Select Sum(...) As Wert, .. from qry_Produkte_Produktplaetzte
) X
...


mfg
Josef

EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/

Ähnliche fragen