Ich habe eine Tabelle mit vielen Spalten, die angibt, ob ein Fehler gültig ist oder nicht. Ich muss so ausgegeben werden, dass Spaltennamen, die den Fehler als Zeilen und Anzahl der gültigen und ungültigen Felder für jeden Fehler angeben.
Beispiel für eine ähnliche Eingabe und erwartete Ausgabe unten
id name txn_column_name flag1 flag2 flag3
1 Resident Count resident_ct Y Y N
2 Incident Count incident_ct Y Y Y
3 Facility Status facil_stat N N N
Ausgabe erforderlich
Col1_name Y_Count N_Count
flag1 2 1
flag2 2 1
flag3 1 2
Wir können hier versuchen, den UNPIVOT
Operator von Oracle zu verwenden :
SELECT
flag AS Col1_name,
COUNT(CASE WHEN val = 'Y' THEN 1 END) AS Y_Count,
COUNT(CASE WHEN val = 'N' THEN 1 END) AS N_Count
FROM yourTable
UNPIVOT
(
val FOR (flag) IN (
flag1 AS 'flag1',
flag2 AS 'flag2',
flag3 AS 'flag3'
)
)
GROUP BY
flag
ORDER BY
flag;
Eine andere einfache Option verwendet eine Reihe von Gewerkschaften:
SELECT
'flag1' AS Col1_name,
COUNT(CASE WHEN flag1 = 'Y' THEN 1 END) AS Y_Count,
COUNT(CASE WHEN flag1 = 'N' THEN 1 END) AS N_Count
FROM yourTable
UNION ALL
SELECT 'flag2', COUNT(CASE WHEN flag2 = 'Y' THEN 1 END),
COUNT(CASE WHEN flag2 = 'N' THEN 1 END)
FROM yourTable
UNION ALL
SELECT 'flag3', COUNT(CASE WHEN flag3 = 'Y' THEN 1 END),
COUNT(CASE WHEN flag3 = 'N' THEN 1 END)
FROM yourTable
ORDER BY 1;
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen