PDA

Vollständige Version anzeigen : Standardwert bei Query


Grumbler85
24.01.2008, 14:38
Hallo,

ich suche nach einer Möglichkeit für eine Pivot Tabelle:
TRANSFORM Int(Sum(soby.Umsatz)/1000) > 0 AS [Summe von Umsatz] " & _
"SELECT Month(soby.Datum) AS Monat " & _
"FROM SqlStat_SelectOrdersByDate AS soby " & _
where & _
"GROUP BY Month(soby.Datum) " & _
"ORDER BY Month(soby.Datum), Format(CDate(soby.[Datum]),""yyyy"") " & _
"PIVOT Format(CDate(soby.[Datum]),""yyyy"");"
(VBA, daher die & _ Dinger)

Die Summe 0 zu setzen, falls nicht vorhanden (alse es passiert, dass einige Monate schlicht keine Summe haben und selbige sollen nicht NULL sondern 0 sein)

Gruß
TG

Arne Dieckmann
24.01.2008, 14:40
Nullwerte in Kreuztabellen (Klick mich) (http://www.ardiman.de/datenbanken/grundlagen/abfragen.html#SEC4) sollte helfen.

Grumbler85
24.01.2008, 14:58
Ich hab es nun ein wenig angepasst, aber es scheint sich nicht dafür zu interessieren..
Problem ist wohl, dass ja das Datum schon nicht existiert
Weil im Datensatz steht sowohl der Umsatz als auch das Datum und wenn beide nicht existieren werde ich auch mit
TRANSFORM Int(Val(Nz(Sum(soby.Umsatz)/1000,0)))
keinen Erfolg haben, was?
Im Endeffekt müsste ich sogar schon das fehlende Datum erzeugen......

Da es dafür vermutlich keine einfache Lösung gibt, irgnorieren wir mein Problem am Besten, denke ich ;)

Hab grade gesehen ich hab oben den Falschen Query angegeben.. die sind beide ähnlich:
TRANSFORM Int(Val(Nz(Sum(soby.Umsatz)/1000,0))) AS [Summe von Umsatz] " & _
"SELECT Format(soby.Datum,""yyyy/mm"") AS Monat " & _
"FROM SqlStat_SelectOrdersByDate AS soby " & _
where & _
"GROUP BY Format(soby.Datum,""yyyy/mm"") " & _
"ORDER BY Format(soby.Datum,""yyyy/mm"") " & _
"PIVOT ""Umsatz"";"

Der Pivot macht den Unterschied

Arne Dieckmann
24.01.2008, 16:06
Nicht zu früh aufgeben: Fixierte Spaltenüberschriften (Klick mich) (http://www.ardiman.de/datenbanken/grundlagen/abfragen.html#SEC7) ist auch zu lesen.

Den "erledigt"-Status dieses Threads habe ich wieder aufgehoben.

Grumbler85
24.01.2008, 23:21
Die Problematik dabei ist ja folgende:
Der Query bereitet die Daten für MSGraph vor, deshalb Pivot mit "Umsatz", dadruch bekommt die Datenreihe in der Legende diesen Namen

Nun ist in der Datenreihe aber da die Summe grade NULL ist ja nichtmal das Datum vorhanden (wie auch, da es ja vom Umsatz irgendwie Abhängt - ich leg ja nicht nen Datum an, wenn ich keinen Umsatz habe)
Das heißt um alle Daten zu bekommen müsste ich praktisch nen Query ausführen, der mir alle Monate von z.B. 2005 - 2007 liefert und da dann per LEFT JOIN den Umsatz dranjoinen und halt Umsatz nennen...

Ne Idee für diesen Query?

SELECT Format(Date(),"mm/yyyy") FROM <<nirgendwo>> WHERE Date() BETWEEN #01/01/2005# AND #12/01/2007#

(Ich weiß, dass dieser Code mir das nicht liefern wird, aber villeicht gibts ne Möglichkeit - durchzählen oder so :D)

Ich brauche also Quasi dynamisch erzeugte, fixierte Zeilenüberschriften oO