У меня очень длинный оператор CASE
, и он делает запрос очень длинным. Есть ли альтернативный способ? Оказывает ли длинное заявление CASE
на производительность? Я вижу, что люди рекомендуют COALESCE
, но я не уверен, что это хорошая альтернатива в моем запросе.SQL Server: Альтернатива длинного оператора CASE
Пример, приведенный ниже, a, b, c, d, e, f являются столбцами таблицы, но я просто использую здесь букву, чтобы привести пример.
UPDATE table
SET totalAmt = CASE
WHEN product_id = 1 THEN a*b*c*d
WHEN product_id = 2 THEN c*d*e + 1
WHEN product_id = 3
THEN
CASE WHEN term = 12 THEN b*c*d*e ELSE a*b*e*f END
WHEN product_id = 4 THEN a+b+c+d
etc.....
END
FROM table
Влияние производительности выражения случае, вероятно, не то, о чем вам нужно беспокоиться. И 'coalesce()' - это просто выражение в сокращенном выражении. – shawnt00
Вы уверены, что все случаи настолько просты, как вы изображаете? У меня такое чувство, что по крайней мере один из случаев и, возможно, множественный, также имеют в них выборные утверждения? –