Hallo Zusammen,
Habe eine Subquery und moechte diese mehrmals mit Union gruppieren um verschiede Summen vorher auszugeben.
Problem: Innerhalb jeder Union muss ich dieselbe Query mit den Details angeben.
Kann stattdessen nicht von allen UNION-Teilen auf eine allgemein gueltige Query zugegriffen werden?
Bzw. gibt es einen komplett anderen Loesungsansatz?
Ausgabe soll also z.B. sein (basierend auf 2 x Union):
**************************************************
Peter 28 //Summiert und gruppiert auf Name
Jack 12
Nora 34
Montag: 4 //Summiert und gruppiert auf Wochentag
Dienstag:2
Mittwoch:1
Peter Montag 20 //Einzelne Datensaetze
Peter Mittwoch 8
Jack Montag 8
Jack Dienstag 4
Nora Montag 5
Nora Montag 5
Nora Dienstag 24
******************************************
Folgende Query funktioniert (Um zu vereinfachen sind einige Zeilen entnommen, kann also sein dass einige Fehler vorhanden sind. Es geht ja nur ums Prinzip) Frage also --> Wie kann man es umgehen die select qry nach FROM immer wiederholen zu muessen?:
*****************************************
// Die Query die die Summe auf Groupierung MName bildet
Select MName, sum(Pts1)
From
(
SELECT 'A'&format(inDateTime,'YYYYMMDD HH:mm:ss') as Qsort,
m.Membername as MName,
e.format(inDateTime,'ddd') as Day,
e.EntryPaid * 2 as Pts1
from Entries e
left join members m on m.MemNo = e.MemNo
where year(e.inDateTime) = 2012
)
Group by MName
UNION
// Die Query die die Summe auf Groupierung Day bildet
Select Day, sum(Pts1)
From
(
SELECT 'B'&format(inDateTime,'YYYYMMDD HH:mm:ss') as Qsort,
m.Membername as MName,
e.format(inDateTime,'ddd') as Day,
e.EntryPaid * 2 as Pts1
from Entries e
left join members m on m.MemNo = e.MemNo
where year(e.inDateTime) = 2012
)
Group by Day
UNION
// Die Query mit den Details (Beispielsweise alle Datensaetze)
// --> Hierauf sollten die Selects der anderen Unions zugreifen, das geht
// aber meines wissens nach nicht. Was waere daher eine Alternative?
SELECT 'C'&format(inDateTime,'YYYYMMDD HH:mm:ss') as Qsort,
m.Membername as MName,
e.format(inDateTime,'ddd') as Day,
e.EntryPaid * 2 as Pts1
from Entries e
left join members m on m.MemNo = e.MemNo
where year(e.inDateTime) = 2012
Sort by Qsort
**************************************
Also anstatt das obene angegebene eben sowas aehnliches wie unten (Ziel ist also zu verhindern, dass das select statement immer wieder kopiert werden muss):
****************************************
Select sum(Pts1)
From
( DIE-UNTERQUERY)
Group by MName
UNION
Select sum(Pts1)
From
( DIE-UNTERQUERY)
Group by Day
UNION
DIE-UNTERQUERY
Sort by Qsort
Hoffe das ist zu verstehen!...
Gruss
D
Habe eine Subquery und moechte diese mehrmals mit Union gruppieren um verschiede Summen vorher auszugeben.
Problem: Innerhalb jeder Union muss ich dieselbe Query mit den Details angeben.
Kann stattdessen nicht von allen UNION-Teilen auf eine allgemein gueltige Query zugegriffen werden?
Bzw. gibt es einen komplett anderen Loesungsansatz?
Ausgabe soll also z.B. sein (basierend auf 2 x Union):
**************************************************
Peter 28 //Summiert und gruppiert auf Name
Jack 12
Nora 34
Montag: 4 //Summiert und gruppiert auf Wochentag
Dienstag:2
Mittwoch:1
Peter Montag 20 //Einzelne Datensaetze
Peter Mittwoch 8
Jack Montag 8
Jack Dienstag 4
Nora Montag 5
Nora Montag 5
Nora Dienstag 24
******************************************
Folgende Query funktioniert (Um zu vereinfachen sind einige Zeilen entnommen, kann also sein dass einige Fehler vorhanden sind. Es geht ja nur ums Prinzip) Frage also --> Wie kann man es umgehen die select qry nach FROM immer wiederholen zu muessen?:
*****************************************
// Die Query die die Summe auf Groupierung MName bildet
Select MName, sum(Pts1)
From
(
SELECT 'A'&format(inDateTime,'YYYYMMDD HH:mm:ss') as Qsort,
m.Membername as MName,
e.format(inDateTime,'ddd') as Day,
e.EntryPaid * 2 as Pts1
from Entries e
left join members m on m.MemNo = e.MemNo
where year(e.inDateTime) = 2012
)
Group by MName
UNION
// Die Query die die Summe auf Groupierung Day bildet
Select Day, sum(Pts1)
From
(
SELECT 'B'&format(inDateTime,'YYYYMMDD HH:mm:ss') as Qsort,
m.Membername as MName,
e.format(inDateTime,'ddd') as Day,
e.EntryPaid * 2 as Pts1
from Entries e
left join members m on m.MemNo = e.MemNo
where year(e.inDateTime) = 2012
)
Group by Day
UNION
// Die Query mit den Details (Beispielsweise alle Datensaetze)
// --> Hierauf sollten die Selects der anderen Unions zugreifen, das geht
// aber meines wissens nach nicht. Was waere daher eine Alternative?
SELECT 'C'&format(inDateTime,'YYYYMMDD HH:mm:ss') as Qsort,
m.Membername as MName,
e.format(inDateTime,'ddd') as Day,
e.EntryPaid * 2 as Pts1
from Entries e
left join members m on m.MemNo = e.MemNo
where year(e.inDateTime) = 2012
Sort by Qsort
**************************************
Also anstatt das obene angegebene eben sowas aehnliches wie unten (Ziel ist also zu verhindern, dass das select statement immer wieder kopiert werden muss):
****************************************
Select sum(Pts1)
From
( DIE-UNTERQUERY)
Group by MName
UNION
Select sum(Pts1)
From
( DIE-UNTERQUERY)
Group by Day
UNION
DIE-UNTERQUERY
Sort by Qsort
Hoffe das ist zu verstehen!...
Gruss
D
Kommentar