AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Summe aus einer Spalte mit Bedingungen
Thema durchsuchen
Ansicht
Themen-Optionen

Summe aus einer Spalte mit Bedingungen

Ein Thema von NoName1 · begonnen am 6. Feb 2021 · letzter Beitrag vom 6. Feb 2021
Antwort Antwort
NoName1

Registriert seit: 8. Mär 2018
196 Beiträge
 
Delphi 12 Athens
 
#1

Summe aus einer Spalte mit Bedingungen

  Alt 6. Feb 2021, 11:54
Datenbank: Interbase • Version: egal • Zugriff über: egal
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
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#2

AW: Summe aus einer Spalte mit Bedingungen

  Alt 6. Feb 2021, 12:09
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 = 'Athen 1 else 0 end as Anwesend,
      case when lastatus = 'Ethen 1 else 0 end as Entschuldigt,
      case when lastatus = 'Uthen 1 else 0 end as Unentschuldigt
    from tabelle
    where extract(year from datum) = :pJahr
  )
  group by
    Teilnehmer
)
order by
  Teilnehmer
(nur mal eben hingedaddelt)

Geändert von Delphi.Narium ( 6. Feb 2021 um 12:14 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Summe aus einer Spalte mit Bedingungen

  Alt 6. Feb 2021, 12:23
Oder mit iif()
SQL-Code:
select name2|| ' ' ||name1 as Teilnehmer,
count(*) as GesamtTage
Sum(iif( lastatus = 'A', 1, 0)) as Anwesend, ...
Markus Kinzler
  Mit Zitat antworten Zitat
NoName1

Registriert seit: 8. Mär 2018
196 Beiträge
 
Delphi 12 Athens
 
#4

AW: Summe aus einer Spalte mit Bedingungen

  Alt 6. Feb 2021, 18:54
Vielen Dank für Eure Antwort.
Beide Varianten führen zum Ziel und ich habe einiges Weitere über den Aufbau von SQL-Befehlen gelernt.
  Mit Zitat antworten Zitat
Antwort Antwort


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:36 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