[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2019
    Beiträge
    36

    SQL verschiedene Werte zählen

    Hallo,
    ich habe eine Datei mit einem Datumfeld und einem weiteren Feld das verschiedene Werte enthalten kann. Zum Beispiel so:
    20210615 ABC1
    20210615 ABC2
    20210615 ABC1
    20210615 ABC3
    20210614 ABC1
    20210614 ABC4

    Nun möchte ich die Anzahl der verschiedenen Werte in Spalte 2 zu dem jeweiligen Datum zählen. In dem einfach Beispiel oben sehe das dann so aus:
    Datum ABC1 ABC2 ABC3 ABC4
    20210615 2 1 1 0
    20210614 1 0 0 1

    Wie kann ich das im SQL Code umsetzen? Die Werte aus Spalte 2 sind übrigens bekannt und endlich. Und ich brauche das ganze unbedingt in einem einzigen SQL-Befehl.

    Danke schonmal und Gruß
    Domeus
    Last edited by Domeus; 15-06-21 at 10:07. Grund: Tabelle formatiert

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    simple:

    count(nullif(feld, 'ABC1')) ABC1Count
    ,count(nullif(feld, 'ABC2')) ABC2Count
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jan 2019
    Beiträge
    36
    Super vielen, vielen Dank

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Wenn du auch noch 0 stall Null sehen möchtest, packe den Count noch in ein
    coalesce(count(....), 0) name
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Jan 2019
    Beiträge
    36
    Zitat Zitat von Fuerchau Beitrag anzeigen
    simple:

    count(nullif(feld, 'ABC1')) ABC1Count
    ,count(nullif(feld, 'ABC2')) ABC2Count
    MUss doch nochmal nachfragen. Bei mir setzt er hiermit zwar die entsprechenden Felder auf NULL aber zählt trotzdem alle Felder und nicht nur die die NULL sind.

    EDIT: Habe gerade gemerkt, dass dann ja die NULL Felder beim count nicht mitzählen. Heisst wenn ich count(*) - count(nullif(feld, 'ABC1')) ABC1Count machen würde hätte ich wohl das was ich brauche. Geht das auch nur mit einem Befehl oder muss ich immer so rechnen?

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Du hast ja gesagt, du willst die Anzahl der verschienden Werte und nicht die Differenz zur Gesamtanzahl zählen.
    Das Rechnen kannst du so machen, allerdings geht auch das einfacher.
    Der Nulliff() entspricht ja einem case-Ausdruck. Du kannst also beliebige Case-Ausdrücke verwenden um etwas zu zählen oder zu summieren.

    count(case when feld <> 'ABC1' then feld else null end) <= liefert NULL wenn nur ABC1 vorhanden.
    sum(case when feld <> 'ABC1' then 1 else 0 end) <= liefert 0 wenn nur ABC1 vorhanden.

    Case-Ausdrücke kannst du an allen Stellen verwenden, sogar im Join on als auch im Where, Group oder Having.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Zusammenhängende Zeiträume zählen
    By RobertMack in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 25-04-19, 13:26
  2. SQL Ergebnisse zählen
    By Domeus in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 29-01-19, 12:52
  3. verschiedene Jobs gleiche Datei, schreib / lese konflikt?
    By dibe in forum NEWSboard Programmierung
    Antworten: 20
    Letzter Beitrag: 25-02-16, 15:33
  4. verschiedene ALTE Sachen...
    By HEMO in forum NEWSboard Server & Hardware Markt
    Antworten: 0
    Letzter Beitrag: 03-04-03, 14:20
  5. Benutzer zählen...
    By Joe in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 08-11-01, 13:37

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •