[英]Case expression on a created column
我已經在Microsoft SQL Server中設置了一個視圖。 我要顯示的部分視圖創建一個名為Starch的列。 如何在case表達式中操縱該創建的列,以確定該列是大於還是小於2?
.
..
...
MAX(CASE WHEN R.ANALYTE = 'Starch' then
(CASE WHEN ISNUMERIC(R.RN5) = 1 THEN CONVERT(float,R.RN5) ELSE convert(float,0) END) end) as [Starch],
CASE
WHEN Starch > 2 THEN 'ABOVE'
ELSE 'Below' END
As 'Starch_Cautionary',
...
..
.
假設您的ISNUMERIC
仍然不會導致轉換錯誤(即使數據= 1,也可能取決於數據),則可以將其包裝在CTE
中。
with cte as(
.
..
...
MAX(CASE WHEN R.ANALYTE = 'Starch' then
(CASE WHEN ISNUMERIC(R.RN5) = 1 THEN CONVERT(float,R.RN5) ELSE convert(float,0) END) end) as [Starch],
...
..
.)
select
*,
CASE
WHEN Starch > 2 THEN 'ABOVE'
ELSE 'Below' END
As 'Starch_Cautionary',
...
..
.
from cte
ISNUMERIC()的示例失敗...有點...針對您的情況
declare @table table (i varchar(16))
insert into @table
values
('$'),
('1e4'),
('1,256,233'),
('5D105')
select isnumeric(i) from @table
這些都返回true,但是轉換失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.