簡體   English   中英

在創建的列上的案例表達

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM