Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: SQL Probelm !!! -> Group by ?

  Alt 13. Dez 2006, 09:27
Zwei Möglichkeiten:
1. Du verbastelst die Monatsnamen im SELECT. Oracle kenn ich nicht, aber unter MSSQL sieht das dann so aus:
SQL-Code:
select
  case Month(Datum)
    when 1 then 'Januar'
    when 2 then 'Februar'
    ...
    when 12 then 'Dezember'
    end as Monat,
...
from
...
group by
   case Month(Datum)
    when 1 then 'Januar'
    when 2 then 'Februar'
    ...
    when 12 then 'Dezember'
    end
2. Du erzeugst aus dem Monat (ist ja eine Zahl) ein Datum, z.B. '1.<Monat>.2006'. Im TChart wählst Du dann als Achsenformat 'mmm' oder so ähnlich. Ich habe dafür in MSSQL eine UDF geschrieben und gruppiere so:

SQL-Code:
select
  dbo.FirstOfMonth(Datum),
  Count (*)
from
...
group by dbo.FirstOfMonth(Datum)
Diese Funktion sieht so aus (Sind eigentlich zwei):
SQL-Code:
CREATE FUNCTION [dbo].[DateOnly] (@Date DateTime)
RETURNS Datetime AS
BEGIN
  Return cast (floor (cast (@Date as float)) as DateTime)
END

CREATE FUNCTION [dbo].[FirstOfMonth] (@Date DateTime)
RETURNS DateTime AS
BEGIN
  Return dbo.DateOnly (dateadd (day,-datepart (day,@Date) + 1, @Date))
END
DateOnly schnippelt den Zeit-Anteil weg.
FirstOfMonth zieht vom aktuellen Datum 'Tag-1' Tage ab. Logischerweise ist das dann der 1.des Monats.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat