Gibt es ein einfacheres T-SQL-Konstrukt für "alle diese Spalten müssen in einer Zeile gleich sein (NULL-Werte ignoriert)" - effektiv möchte ich sagen:
WHERE MIN(a, b, c) = MAX(a, b, c) OR COALESCE(a, b, c) IS NULL
- Dies wäre das Äquivalent der COALESCEs aller Permutationen, um gleich zu sein - es gibt jedoch keine nicht aggregierende MIN / MAX-Funktion
Eine Alternative für 3 Spalten ist:
WHERE (
COALESCE(a, b, c) = COALESCE(b, c, a)
AND COALESCE(a, b, c) = COALESCE(c, a, b)
AND COALESCE(a, b, c) = COALESCE(b, a, c)
AND COALESCE(a, b, c) = COALESCE(a, c, b)
AND COALESCE(a, b, c) = COALESCE(c, b, a)
)
OR COALESCE(a, b, c) IS NULL
dh "Alle Nicht-NULL-Spalten a, b, c müssen gleich sein oder alle Spalten können null sein"
Natürlich könnte eine PIVOT / UNPIVOT-Implementierung oder eine komplexe CASE-Anweisung durchgeführt werden, aber ich suche etwas relativ Einfaches.
In diesem Fall sind die Spalten alle Ganzzahlen, daher gibt es wahrscheinlich einen mathematischen Trick, den ich herausfinden könnte.