Ich versuche, Kunden zu zählen, die über verschiedene Kanäle erreichbar sind. Der folgende Code gibt mir eine einzige Zählung nur der Kunden, die per SMS erreichbar sind.SQL: Spalte Spalte x wenn Spalte y = z
with grouping as (
select distinct
case when sms_correct_flag = 'Y' then 'Y' else 'N' end as smsable,
case when email_correct_flag = 'Y' then 'Y' else 'N' end as emailable,
case when address_correct_flag = 'Y' then 'Y' else 'N' end as dmable,
contact_key
from raw.contacts
)
select count(distinct contact_key)
from grouping
where smsable = 'Y';
Ich mag mit einem Tisch, gefüllt mit ‚Kanal‘ als eine Spalte, ‚E-Mail‘, ‚SMS‘, ‚DM‘, wie Zeilen und ihren jeweiligen Kunden zählen am Ende.
Dies kann eine Zählung sein (Fall, wenn ....), kann aber nicht herausfinden, wie das funktioniert, wenn wir den Fall für eine Spalte überprüfen, die nicht mit der Spalte übereinstimmt, die wir zählen.
Jede Hilfe ist willkommen!
Bearbeiten Sie Ihre Frage und geben Sie Beispieldaten und gewünschte Ergebnisse an. –
Ich vermute, du bist eine Lösung, die etwas im Sinne von HAVING im Gegensatz zu WHERE ist. –