假設我有這個查詢
SELECT [A], [B], [C], [D], [E] CASE WHEN [A] <> '' THEN [B] [C] WHEN [A] = '' THEN [B] - [C] ELSE '' END AS [Result] FROM [TableA]
但是,[B] - [C] 產生一個負值,我想將它舍入為零,知道怎么做嗎?
uj5u.com熱心網友回復:
您可以使用另一個嵌套CASE運算式:
SELECT [A], [B], [C], [D], [E],
CASE WHEN [A] <> '' THEN [B] [C]
WHEN [A] = '' THEN
CASE WHEN [B] - [C] < 0 THEN 0 ELSE [B] - [C] END
END AS [Result]
FROM [TableA];
我洗掉了ELSE外部CASE運算式中的條件,因為該CASE運算式似乎正在生成數值。因此,將空字串作為一種可能的值是沒有意義的。
uj5u.com熱心網友回復:
您可以通過使用值建構式首先評估B - C然后在案例運算式中使用它來簡化案例運算式;A比較相等或不相等時只有兩種可能性(不考慮可空性)。
select A, B, C, D, E,
case when A = '' then BminusC else B C end as Result
from TableA
cross apply(values(Iif(B - C < 0, 0, B - C)))v(BminusC);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/492705.html
