Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Summe aus einer Spalte mit Bedingungen (https://www.delphipraxis.net/206891-summe-aus-einer-spalte-mit-bedingungen.html)

NoName1 6. Feb 2021 10:54

Datenbank: Interbase • Version: egal • Zugriff über: egal

Summe aus einer Spalte mit Bedingungen
 
Guten Tag,
ich habe in einer Tabelle eine Spalte "lastatus" in der unterschiedliche Werte gespeichert werden.
a) A=Anwesend
b) E=Entschuldigt
c) U=Unentschuldigt

Nun möchte ich verschiedene Summen ermitteln.
1) GesamtTage = Count(*)
2) Anwesende Tage = A
3) Entschuldigte Tage = E
4) Unentschuldigte Tage = U

Meine Frage: Wie muss der SQL-String aufgebaut werden, wenn es überhaupt möglich ist?

Code:
select name2|| ' ' ||name1 as Teilnehmer,
count(*) as GesamtTage
Sum(*) as Anwesend "wenn lastatus = A"
Sum(*) as Entschuldigt "wenn lastatus = E"
Sum(*) as Unentschuldigt "wenn lastatus = U"
where extract(year from datum) = :pJahr
Die Ausgabe wird so aussehen:
Teilnehmer|Anzahl Tage|Anwesend|Entschuldigt|Unentschuldigt
...


Vielen Dank für Eure Hilfen im Voraus

Delphi.Narium 6. Feb 2021 11:09

AW: Summe aus einer Spalte mit Bedingungen
 
Sowas in der Art?
SQL-Code:
select
  Teilnehmer,
  Anwesend + Entschuldigt + Unentschuldigt as GesamtTage,
  Anwesend,
  Entschuldigt,
  Unentschuldigt
from (
  select
    Teilnehmer,
    sum(Anwesend) as Anwesend,
    sum(Entschuldigt) as Entschuldigt,
    sum(Unentschuldigt) as Unentschuldigt
  from (
    select
      name2|| ' ' ||name1 as Teilnehmer,
      case when lastatus = 'A' then 1 else 0 end as Anwesend,
      case when lastatus = 'E' then 1 else 0 end as Entschuldigt,
      case when lastatus = 'U' then 1 else 0 end as Unentschuldigt
    from tabelle
    where extract(year from datum) = :pJahr
  )
  group by
    Teilnehmer
)
order by
  Teilnehmer
(nur mal eben hingedaddelt)

mkinzler 6. Feb 2021 11:23

AW: Summe aus einer Spalte mit Bedingungen
 
Oder mit iif()
SQL-Code:
select name2|| ' ' ||name1 as Teilnehmer,
count(*) as GesamtTage
Sum(iif( lastatus = 'A', 1, 0)) as Anwesend, ...

NoName1 6. Feb 2021 17:54

AW: Summe aus einer Spalte mit Bedingungen
 
Vielen Dank für Eure Antwort.
Beide Varianten führen zum Ziel und ich habe einiges Weitere über den Aufbau von SQL-Befehlen gelernt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz