Thema: Delphi Problem mit UNION Select

Einzelnen Beitrag anzeigen

omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#68

Re: Problem mit UNION Select

  Alt 9. Mai 2008, 23:27
Ok, dann hier nochmal ein neuer Vorschlag...

Delphi-Quellcode:
uses DateUtils;

function GetSQL(StartTag:TDate; Monat:byte):string;
var s:string;
    Datum, Ende:TDate;
begin
  Datum:=StartTag;
  Ende:=IncMonth(StartTag, Monat)-1;
  s:='';
  while Datum <= Ende do begin
    s:=s + Format(
      ' MAX(CASE WHEN datum = %s ' +
                   'THEN kurzzeichen ' +
                   'ELSE NULL ' +
                 'END) AS "%s",',
      [QuotedStr(DateToStr(Datum)), DateToStr(Datum)]) + #13;
    Datum:=IncDay(Datum, 1);
  end;
  if s <> 'then
    s:=copy(s, 1, length(s)-2);
  Result:=
    Format(
      'SELECT EXTRACT(YEAR FROM datum) jahr,'#13 +
      ' EXTRACT(MONTH FROM datum) monat,'#13 +
      ' personalnr,'#13 +
      '%s'#13 +
      'FROM temp2007'#13 +
      'WHERE datum BETWEEN %s AND %s'#13 +
      'GROUP BY EXTRACT(YEAR FROM datum),'#13 +
      ' EXTRACT(MONTH FROM datum), personalnr'#13 +
      'ORDER BY EXTRACT(YEAR FROM datum),'#13 +
      ' EXTRACT(MONTH FROM datum), personalnr',
      [s,
       QuotedStr(DateToStr(StartTag)),
       QuotedStr(DateToStr(Ende))]
    );
end;
Aufruf...

Ein Monat:
Query.SQL.Text:=GetSQL(StrToDate('1.5.2008'), 1); Zwei Monate:
Query.SQL.Text:=GetSQL(StrToDate('1.5.2008'), 2); Halb + Ganz + Halb:
Query.SQL.Text:=GetSQL(StrToDate('15.4.2008'), 2); Gruss
Thorsten
  Mit Zitat antworten Zitat