Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Zwei Tabellen verknüpfen und summieren aber mit NULLs (https://www.delphipraxis.net/214112-zwei-tabellen-verknuepfen-und-summieren-aber-mit-nulls.html)

Blup 22. Nov 2023 09:38

AW: Zwei Tabellen verknüpfen und summieren aber mit NULLs
 
Die Auswertung scheint sich auf eine ganz bestimmte Kasse zu beziehen.
Dann gehört (pu.Z_KASSE_ID = 'MeineKasse') in die where-Klausel.

Delphi.Narium 22. Nov 2023 10:45

AW: Zwei Tabellen verknüpfen und summieren aber mit NULLs
 
so?
SQL-Code:
select
  pu.KASSENABSCHLUSS_NR,
  sum(case
        when p.GV_TYP = 11 then pu.POS_BRUTTO -- 3. Oder falls es solche gibt die Summe dieser
        else Null -- 2. Die enthält entweder Null, wenn es keine Belege mit einer Belegpos für die GV_TYP = 11 gibt
      end
     ) as Summe
from
(
  select
    KASSENABSCHLUSS_NR,
    BON_ID,
    POS_BRUTTO
  from KASSE_BONPOS_UST
  where pu.Z_KASSE_ID = 'MeineKasse' -- 0. Wir wollen nur diese Kasse auswerten, hier dürfte das Ergebnis genau ein Datensatz sein.
) pu
left join KASSE_BONPOS p
  on (pu.KASSENABSCHLUSS_NR = p.KASSENABSCHLUSS_NR) and
     (pu.BON_ID = p.BON_ID)
group by pu.KASSENABSCHLUSS_NR -- 1. Jeweils eine Zeile pro KASSENABSCHLUSS_NR
order by pu.KASSENABSCHLUSS_NR

Jumpy 22. Nov 2023 11:24

AW: Zwei Tabellen verknüpfen und summieren aber mit NULLs
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1529925)
so?
SQL-Code:
select
  pu.KASSENABSCHLUSS_NR,
  sum(case
        when p.GV_TYP = 11 then pu.POS_BRUTTO -- 3. Oder falls es solche gibt die Summe dieser
        else Null -- 2. Die enthält entweder Null, wenn es keine Belege mit einer Belegpos für die GV_TYP = 11 gibt
      end
     ) as Summe
from
(
  select
    KASSENABSCHLUSS_NR,
    BON_ID,
    POS_BRUTTO
  from KASSE_BONPOS_UST
  where pu.Z_KASSE_ID = 'MeineKasse' -- 0. Wir wollen nur diese Kasse auswerten, hier dürfte das Ergebnis genau ein Datensatz sein.
) pu
left join KASSE_BONPOS p
  on (pu.KASSENABSCHLUSS_NR = p.KASSENABSCHLUSS_NR) and
     (pu.BON_ID = p.BON_ID)
group by pu.KASSENABSCHLUSS_NR -- 1. Jeweils eine Zeile pro KASSENABSCHLUSS_NR
order by pu.KASSENABSCHLUSS_NR

Das sollte nicht funktionieren, weil das pu. in der Where Klauses da innerhalb des Subselect nicht bekannt ist.

Delphi.Narium 22. Nov 2023 11:36

AW: Zwei Tabellen verknüpfen und summieren aber mit NULLs
 
Zitat:

Zitat von Jumpy (Beitrag 1529926)
Zitat:

Zitat von Delphi.Narium (Beitrag 1529925)
so?
SQL-Code:
select
  pu.KASSENABSCHLUSS_NR,
  sum(case
        when p.GV_TYP = 11 then pu.POS_BRUTTO -- 3. Oder falls es solche gibt die Summe dieser
        else Null -- 2. Die enthält entweder Null, wenn es keine Belege mit einer Belegpos für die GV_TYP = 11 gibt
      end
     ) as Summe
from
(
  select
    KASSENABSCHLUSS_NR,
    BON_ID,
    POS_BRUTTO
  from KASSE_BONPOS_UST
  where pu.Z_KASSE_ID = 'MeineKasse' -- 0. Wir wollen nur diese Kasse auswerten, hier dürfte das Ergebnis genau ein Datensatz sein.
) pu
left join KASSE_BONPOS p
  on (pu.KASSENABSCHLUSS_NR = p.KASSENABSCHLUSS_NR) and
     (pu.BON_ID = p.BON_ID)
group by pu.KASSENABSCHLUSS_NR -- 1. Jeweils eine Zeile pro KASSENABSCHLUSS_NR
order by pu.KASSENABSCHLUSS_NR

Das sollte nicht funktionieren, weil das pu. in der Where Klauses da innerhalb des Subselect nicht bekannt ist.

Du hast recht, da hab' ich was vergessen wegzumachen :-( (Copy&Paste sollte ich mir abgewöhnen ;-))
SQL-Code:
select
  pu.KASSENABSCHLUSS_NR,
  sum(case
        when p.GV_TYP = 11 then pu.POS_BRUTTO -- 3. Oder falls es solche gibt die Summe dieser
        else Null -- 2. Die enthält entweder Null, wenn es keine Belege mit einer Belegpos für die GV_TYP = 11 gibt
      end
     ) as Summe
from
(
  select
    KASSENABSCHLUSS_NR,
    BON_ID,
    POS_BRUTTO
  from KASSE_BONPOS_UST
  where Z_KASSE_ID = 'MeineKasse' -- 0. Wir wollen nur diese Kasse auswerten, hier dürfte das Ergebnis genau ein Datensatz sein.
) pu
left join KASSE_BONPOS p
  on (pu.KASSENABSCHLUSS_NR = p.KASSENABSCHLUSS_NR) and
     (pu.BON_ID = p.BON_ID)
group by pu.KASSENABSCHLUSS_NR -- 1. Jeweils eine Zeile pro KASSENABSCHLUSS_NR
order by pu.KASSENABSCHLUSS_NR
So besser?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 Uhr.
Seite 2 von 2     12   

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