1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Mit Abfrage Abteilungen nach Jahr und Monat gruppieren

Dieses Thema im Forum "Firebird und Interbase" wurde erstellt von ronin269, 14 Februar 2016.

  1. ronin269

    ronin269 Benutzer

    Hallo an alle,

    ich habe ein weiteres Problem.

    Ich habe in einer Firebirddatenbank alle Belege.

    Nun haben wir 3 Abteilungen und für jede Abteilung ein Datum mit Auftragswert. Also kann in einem Auftrag nur 1 Datum stehen oder zwei oder 3 Felder ausgefüllt sein.

    Bsp:

    Daten.jpg
    Ich möchte nun alle 3 Abteilungen nach Monat und Jahr gruppieren

    also z.B.:
    Überschrift Umsatz Abt A Umsatz AbtB Umsatz Abt C
    Juli 2014
    August 2014
    ...

    Hat jemand eine Idee
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Bin mir nicht sicher, ob Firebird diese Abfrage versteht, aber mal so als Peilung:

    Code:
    test=*# select * from ronin ;
     beleg  | a_wert |  a_date  | b_wert | b_date | c_wert |  c_date
    --------+--------+------------+--------+--------+--------+------------
     129335 |  1250 | 2014-07-24 |  0 |  |  5223 | 2014-06-30
     129336 |  0 |  |  0 |  |  7873 | 2014-07-08
    (2 Zeilen)
    
    test=*# select 'Juni 2014', sum(a_wert) filter (where extract(month from a_date) = 6), sum(b_wert) filter (where extract(month from b_date) = 6), sum(c_wert) filter(where extract(month from c_date)=6) from ronin group by 1 union all select 'Juli 2014', sum(a_wert) filter (where extract(month from a_date) = 7), sum(b_wert) filter (where extract(month from b_date) = 7), sum(c_wert) filter(where extract(month from c_date)=7) from ronin group by 1 union all select 'August 2014', sum(a_wert) filter (where extract(month from a_date) = 8), sum(b_wert) filter (where extract(month from b_date) = 8), sum(c_wert) filter(where extract(month from c_date)=8) from ronin group by 1;
      ?column?  | sum  | sum | sum
    -------------+------+-----+------
     Juni 2014  |  |  | 5223
     Juli 2014  | 1250 |  | 7873
     August 2014 |  |  |
    (3 Zeilen)
    
    
     
  3. ronin269

    ronin269 Benutzer

    Danke für deine Hilfe.

    Filter kennt er nicht, wäre es vergleichbar mit:

    Code:
    sum(case when extract(month from a_date) = 6)
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Ja. Filter ist aber cool ;-)
     
  5. ronin269

    ronin269 Benutzer

    mit sum(case when ...) das klappt.

    Ich möchte aber, wenn es gehen würde, nicht jede Zeile einzel abfragen. Ich würde gern einen Zeitraum angeben.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Dann ändere Dein DB-Modell. Das ist eh vergurkt.
     
  7. ronin269

    ronin269 Benutzer

    Das ist von einer Firma vor vielen Jahren erstellt worden. Bei einer Änderung müssen sehr viele Abfragen, Statistiken... angepasst werden.

    Trotzdem Danke für deine Hilfe.
     
    akretschmer gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden