的計算值我有一個查詢,如:檢查與案件表達
SELECT *,
(A+B) AS TOTALVALUE
FROM
(SELECT A,B FROM MYTABLE) AS MYTABLE1
如何使用與計算值case...when
?例如,如果我的計算值大於1,我希望它是10,否則我希望它返回它的值。我怎麼能做到這一點?
的計算值我有一個查詢,如:檢查與案件表達
SELECT *,
(A+B) AS TOTALVALUE
FROM
(SELECT A,B FROM MYTABLE) AS MYTABLE1
如何使用與計算值case...when
?例如,如果我的計算值大於1,我希望它是10,否則我希望它返回它的值。我怎麼能做到這一點?
SELECT *
, (A+B) AS TOTAL VALUE
, case when (A + B) > 1 then 10 else (A + B) end as my_calc_col
FROM MYTABLE
您也可能要考慮NULLs
:
select
x.A
, x.B
, case when TOTAL_VALUE > 1 then 10 else TOTAL_VALUE end as TOTAL_VALUE2
from
(
select coalesce(A, 0) + coalesce(B, 0) as TOTAL_VALUE
, A
, B
FROM MYTABLE
) x
編輯:我還簡化了此位:
FROM
(SELECT A,B FROM MY TABLE) AS MYTABLE1
一樣簡單:
SELECT A, B, .....
FROM MYTABLE
SELECT
*,
CASE WHEN
(A+B) > 1
THEN
10
ELSE
(A+B) END
AS TOTAL VALUE
FROM
(SELECT A,B FROM MY TABLE) AS MYTABLE1
除了其他的答案可能是值得指出的是,也有在SQL Server兩種類型的CASE
這些相當於
CASE x
WHEN y THEN z
ELSE NULL
END
和
CASE
WHEN x = y THEN z
ELSE NULL
END
但你可以據我所知,不會用第一個詞表達:
eg第二個case語句可以這樣做:
CASE
WHEN x + 1 = y - 1 THEN z
ELSE NULL
END
在第二種情況下語句中使用的表達式是有用的,但是如果你需要一個簡單的值進行比較,使用第一個。
你有什麼試過?從[MSDN](http://msdn.microsoft.com/zh-cn/library/ms181765.aspx)中的示例開始。 –