-
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
-
simple:
count(nullif(feld, 'ABC1')) ABC1Count
,count(nullif(feld, 'ABC2')) ABC2Count
-
Super vielen, vielen Dank
-
Wenn du auch noch 0 stall Null sehen möchtest, packe den Count noch in ein
coalesce(count(....), 0) name
-
Zitat von Fuerchau
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?
-
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.
Similar Threads
-
By RobertMack in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 25-04-19, 13:26
-
By Domeus in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 29-01-19, 12:52
-
By dibe in forum NEWSboard Programmierung
Antworten: 20
Letzter Beitrag: 25-02-16, 15:33
-
By HEMO in forum NEWSboard Server & Hardware Markt
Antworten: 0
Letzter Beitrag: 03-04-03, 14:20
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks