PDA

Vollständige Version anzeigen : Abfrage / gruppieren nach Kalenderwochen


thk
07.08.2001, 10:34
Hallo Stema,

die KWs habe ich schon. Es geht darum die KW's pro Monat zu gruppieren und die Summen pro Warengruppe und KW sowie die Summe pro Warengruppe und Monat zu ermitteln.
Mein obiges Beispiel kannst Du dir als die Spaltennamen des Abfrageergebnisses vorstellen.

trotzdem vielen Dank

Thomas

Stema
07.08.2001, 10:41
Hallo Thomas,

mit Format(datum, "ww") kannst Du auf die Kalenderwoche abfragen.

Ich hoffe, daß Du damit weiterkommst.

thk
07.08.2001, 11:26
Sorry, hab das irgendwie nicht kapiert wie man antwortet.

Also nochmal mein Problem:

Ich soll eine Abfrage erstellen, die mir einzelne Warengruppen pro Monat und mir die Summe der Umsätze pro Warengruppe nach den KW's des entsprechenden Monats gruppiert. Zusätzlich sollen die Summe pro Warengruppe und Monat ermittelt werden.
Das Abfrageergebnis soll dann ungefähr so aussehen:

Monat Warengruppe Umsatz/Wo1-5 Umsatz/Monat

Also die Umsätze sollen noch mal nach den KW's des entsprechenden Monats gesplittet werden.

Vielen Dank schonmal

Thomas

A.S.
07.08.2001, 11:51
Hallo Thomas,

angenommen Du hast eine Tabelle tblUmsätze, welche die Felder

WG für die Warengruppe (Zahl)
Datum für das Umsatzdatum (Datum/Uhrzeit)

und

Betrag für die Umsatzsumme (Zahl)

enthält, dann würde die folgende SQL

SELECT
tblUmsätze.WG,
Year([Datum]) AS Jahr,
Month([Datum]) AS Monat,
Format([Datum],"ww") AS KW,
Sum(tblUmsätze.Betrag) AS Sum

FROM
tblUmsätze

GROUP BY
tblUmsätze.WG,
Year([Datum]),
Month([Datum]),
Format([Datum],"ww")

WITH OWNERACCESS OPTION;


Die Umsatzsummen gruppiert nach Warengruppen, Jahr des Umsatzes, Monat des Umsatzes und Kalenderwoche des Umsatzes ermitteln.

Stelle mal die genannten Bedingungen nach und kopiere die SQL in die SQL-Ansicht einer neuen Abfrage. Du mußt natürlich ein paar Testdaten in die Tabelle eingeben ;)

Wenn Du dann in die Entwurfsansicht der Abfrage gehst, siehst Du den normalen Aufbau ;)

Gruß

Arno

thk
07.08.2001, 13:11
Hallo Arno,

so ähnlich hatte ich das auch schon, das Problem ist aber ein wenig diffiziler.
So soll das ergebnis aussehen:

Monat WG KW1 KW2 KW3 KW4 KW5 SummeMonat
-----------------------------------------
1 Mars 20 10 20 20 5 75
1 Twix 15 20 25 20 0 80
2 Mars 10 20 .....................
usw.
Ist das überhaupt mit Access Bordmitteln möglich oder brauch ich sowas wie Crystal Reports?
Die Tabellenstruktur sieht tatsächlich so aus wie Du angenommen hast, das Abfrageergebnis soll dann aber wie oben aussehen.

Gruß
Thomas

A.S.
07.08.2001, 13:47
Hallo Thomas,

in dem Fall mußt Du Dir eine Funktion (für die Auswahlabfrage) schreiben, in welcher Du die Wochenzahl (bei 1 beginnend) innerhalb des Monats ermittelst.

Etwa so (ungetestet):

Public Function GetKWMonat(dteDatum As Date) As Byte
Dim bteKW1 As Byte
bteKW1 = Format(DateSerial(Year(dteDatum), Month(dteDatum), 1), "ww") - 1
GetKWMonat = Format(dteDatum, "ww") - bteKW1
End Function

In der Abfrage schreibst Du dann:

KW: GetKWMonat([Datum])

für das Feld KW.

Die Abfrage sieht dann so aus:

SELECT
tblUmsätze.WG,
Year([Datum]) AS Jahr,
Month([Datum]) AS Monat,
getkwmonat([Datum]) AS KW,
Sum(tblUmsätze.Betrag) AS Sum
FROM
tblUmsätze
GROUP BY
tblUmsätze.WG,
Year([Datum]),
Month([Datum]),
getkwmonat([Datum])
WITH OWNERACCESS OPTION;

Basierend auf dieser Abfrage erstellst Du (Assistenten benutzen) eine Kreuztabellenabfrage, welche dann basierend auf obiger Abfrage so aussähe:

TRANSFORM
Sum(Abfrage1.Sum) AS [Der Wert]
SELECT
Abfrage1.Monat,
Abfrage1.WG,
Sum(Abfrage1.Sum) AS [Gesamtsumme von Sum]
FROM
Abfrage1
GROUP BY
Abfrage1.Monat,
Abfrage1.WG
PIVOT
Abfrage1.KW;

Gruß

Arno

thk
07.08.2001, 14:53
Hallo Arno,

vielen Dank für Deine Hilfe. Werde das allerdings erst morgen Testen können und melde mich dann nochmal.

Gruß
Thomas

thk
08.08.2001, 10:42
Guten Morgen Arno,

habe gerade Deine Abfrage getestet.
Das ist es auch schon fast. Das Problem ist, das ich jetzt für jede KW eine Spalte habe (also 52).
Ich brauche aber für jede KW in einem Monat eine Spalte (also max. 5).
Z.B. im August habe ich die KW 31,32,33,34,35
im September dann KW 35,36,37,38,39
Hintergrund ist das eben aus dieser Abfrage ein Bericht generiert werden soll.

Gruß Thomas