Ich versuche meine Daten basierend auf der Existenz von Text innerhalb einer Variablen für jede ID zu kategorisieren, die ich habe. Zum Beispiel:Fallanweisung basierend auf der Partitionierung von Daten
ID Groupname
1 A
1 B
1 F
2 D
2 B
2 C
Das Ergebnis Ich möchte
seinID Groupname Category
1 A AF
1 B AF
1 F AF
2 D D
2 B D
2 C D
ich etwas wie das folgende tun wollen, aber ich kann es nicht
Select * ,
CASE WHEN A,F in groupname (partition by id) THEN AF
WHEN D in groupname (partition by id) THEN D
....
ELSE null END
FROM table
Antworten in Postgres/Rotverschiebung arbeiten würde sehr geschätzt werden!
EDIT:
Ich reparierte das Problem mit F dass JNevill gebracht.
EDIT2:
Ein Nutzer vorgeschlagen, eine einfache Lösung, die funktioniert, wenn Sie nur 1 Kombination benötigen. Z.B. Wenn ich F oder A sehe, dann ist es AF. Aber wenn ich A und F sehen muss, wird es nicht funktionieren. Hier
ist die einfache Lösung:
WENN sum (CASE WHEN Combo in (20,28,19,27), dann 1 Ende) über (Partition durch log_id) = 1 dann 1000
Wenn i Ich möchte folgendes tun, was sehr langen Code erzeugt. Gibt es einen einfacheren Weg dies zu tun?
WENN sum (CASE WHEN Combo in (20,28,19,27), dann 1 Ende) über (Partition durch log_id) = 1 und sum (CASE WHEN groupid in (1048,598,428), dann 1 Ende) über (Partition von log_id) = 1 dann 1000
Sie haben in Ihren Beispieldaten nicht 'F' als' GROUPNAME'. Warum sollte "B" den Wert "AF" aufnehmen? Was wäre, wenn 'ID'' 2' ein A und ein F hätte? Würde es ein "D" oder ein "AF" bekommen oder gäbe es neue Datensätze für "2", um eine solche Situation zu bewältigen? – JNevill