1
私はシステムを移行していると私は、次のような構造を持っている店の手順が見つかりました:これら2つのクエリに違いはありますか? CASE THEN
SELECT @amount = ISNULL(SUM(amount/
(CASE WHEN (Table_1.column1 > 0) THEN Table_1.column2 ELSE
CASE WHEN (Table_2.column1 > 0) THEN Table_2.column2 ELSE
CASE WHEN (Table_3.column1 > 0) THEN Table_3.column2 ELSE
CASE WHEN (Table_4.column1 > 0) THEN Table_4.column2 ELSE
CASE WHEN (Table_5.column1 > 0) THEN Table_5.column2 ELSE @tc_amount
END END END END END)), 0.00)
FROM Table_1
LEFT OUTER JOIN Table_2 ON ...
LEFT OUTER JOIN ...
WHERE Many_conditions
私はそれを変更する:私はいくつかの証明を行い、両方のクエリを投げる
SELECT @amount = ISNULL(SUM(amount/
(CASE
WHEN (Table_1.column1 > 0) THEN Table_1.column2
WHEN (Table_2.column1 > 0) THEN Table_2.column2
WHEN (Table_3.column1 > 0) THEN Table_3.column2
WHEN (Table_4.column1 > 0) THEN Table_4.column2
WHEN (Table_5.column1 > 0) THEN Table_5.column2 ELSE @tc_amount
END)), 0.00)
FROM Table_1
LEFT OUTER JOIN Table_2 ON ...
LEFT OUTER JOIN ...
WHERE Many_conditions
同じ結果。私はこの変更がOKかどうか、なぜそれがそのように作られたのか分かりません。
私はそれを変更する前に確認したいと思います。
これらは同じです。 –
変更がOKです – Lamak
Yoursがより効率的なCASEステートメントです。 – russ