AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Group mit 0 Werten - Firebird 2.5
Thema durchsuchen
Ansicht
Themen-Optionen

Group mit 0 Werten - Firebird 2.5

Ein Thema von lowmax_5 · begonnen am 18. Jun 2020 · letzter Beitrag vom 19. Jun 2020
 
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#6

AW: Group mit 0 Werten - Firebird 2.5

  Alt 19. Jun 2020, 08:52
Für solche Fälle habe ich stored procedure.
Diese liefert mir den Zeitstrahl mit allen Monaten.

Als ADATUM_VON, ADATUM_BIS wird ein beliebiger Tag im Monat angegeben.


Bsp.:
SQL-Code:
select
  JM.YYYYMM,
  JM.JAHR,
  JM.MONAT,
  Sum(R.Betragnetto) as BetragNetto
from
  SP_JJMM(:von, :bis) JM -- von/bin sind ein beliebiger Tag im Monat
  left join rechnung R on (RECH.RECHNUNGDAT between JM.FIRSTDAY and JM.LASTDAY)

group by
  JM.YYYYMM,
  JM.JAHR,
  JM.MONAT


SQL-Code:
create or alter procedure SP_JJMM (
  ADATUM_VON date,
  ADATUM_BIS date)
returns (
  YYYYMM integer,
  JAHR integer,
  MONAT integer,
  FIRSTDAY date,
  LASTDAY date)
AS
declare M INTEGER;
declare J INTEGER;
declare BM INTEGER;
declare BJ INTEGER;
begin

  IF (ADATUM_VON is not NULL) THEN
  BEGIN
    J = EXTRACT(YEAR FROM ADATUM_VON);
    M = EXTRACT(MONTH FROM ADATUM_VON);
  END ELSE
  BEGIN
    J = EXTRACT(YEAR FROM CURRENT_DATE);
    M = EXTRACT(MONTH FROM CURRENT_DATE);
  END

  IF (ADATUM_BIS is not NULL) THEN
  BEGIN
    BJ = EXTRACT(YEAR FROM ADATUM_BIS);
    BM = EXTRACT(MONTH FROM ADATUM_BIS);
  END ELSE
  BEGIN
    BJ = EXTRACT(YEAR FROM CURRENT_DATE);
    BM = EXTRACT(MONTH FROM CURRENT_DATE);
  END

  JAHR = NULL;
  MONAT = NULL;

  WHILE (J * 100 + M <= BJ * 100 + BM) DO
  BEGIN
    JAHR = J;
    MONAT = M;
    YYYYMM = J * 100 + M;
    FIRSTDAY = J||'-'||M||'-01';
    LASTDAY = DATEADD(MONTH, 1, FIRSTDAY);
    LASTDAY = LASTDAY -1;

    suspend;
    M = M + 1;
    IF (M > 12) THEN
    BEGIN
      M = 1;
      J = J + 1;
    end
  END

end
Alexander
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz