Ich versuche, einige Verschachtelung CASE WHEN
Logik für meine Postgres SQL-Abfrage zu vereinfachen. Mir wurde gesagt, COALESCE kann helfen. Aber es scheint, COALESCE
ist gut für die Verwendung des nächsten Werts, der zur Verfügung gestellt wird, wenn die vorherigen NULL
sind, nicht unbedingt Vergleiche.Verschmelzen mit Vergleichen
Zum Beispiel, Meine Logik ist so, dass ich Cascading Checks habe. Die Excel-Logik, die ich versuche zu replizieren sieht aus wie folgt:
=IF(W3="X",
IF(
ISERROR(
INDEX(
'LOOKUP A'!$L:$L,MATCH($AC3,'LOOKUP A'!$J:$J,0)
)
),
'LOOKUP A'!$L$2,
INDEX(
'LOOKUP A'!$L:$L,MATCH($AC3,'CSR Product City'!$J:$J,0)
)
), IFERROR(
/*
If Not LOOKUP B
Then LOOKUP C
Then LOOKUP D
*/
INDEX(
'LOOKUP B'!$I:$I,MATCH($Y3,'LOOKUP B'!$P:$P,0)
),
IFERROR(
INDEX(
'LOOKUP C'!$H:$H,MATCH($Z3,'LOOKUP C'!$O:$O,0)
),
IFERROR(
INDEX(
LOOKUP D!$G:$G,MATCH($S3,LOOKUP D!$A:$A,0)
),
LOOKUP D!$G$2
)
)
)
)
Welche als solche in SQL kommt. Ich möchte COALESCE verwenden, aber ich bin nicht sicher, wie in diesem Fall, weil ich sehe nicht, wie ich eine IF a.val == b.val THEN
Logik tun:
SELECT
(CASE
WHEN a.price = b.price THEN
(CASE
WHEN a.city = b.city THEN 'match!'
...
)
ELSE
...
END) as test