1

所以我有一个运行良好的现有 SQL 表达式我还需要返回一个命名列,该列将根据字符串上后缀的存在返回 2 个值之一。不太熟悉 SQL 的所有细微差别,我似乎无法获得返回的值 - 或者让 SQL 感到高兴。它是这样的:

DECLARE @LBC nvarchar(3) = 'LBC'
DECLARE @CBD nvarchar(3) = 'CBD'

CASE WHEN tblWellReadingResult_7.test_code LIKE '%CBD%' THEN
@CBD 
ELSE (SELECT @LBC) AS [AssayType],

它对 AS 关键字嗤之以鼻。尝试使用具有类似错误的 IF 语句。

4

3 回答 3

2

您只需要一个 END(对于 CASE 和 IF)

此外,删除 (SELECT @LBC) 中的 SELECT,这样你就只有 @LBC

DECLARE @LBC nvarchar(3) = 'LBC'
DECLARE @CBD nvarchar(3) = 'CBD'

CASE WHEN tblWellReadingResult_7.test_code LIKE '%CBD%' 
     THEN @CBD 
     ELSE @LBC 
END AS [AssayType],

或者

IF tblWellReadingResult_7.test_code LIKE '%CBD%' THEN @CBD ELSE @LBC END AS AssayType,
于 2012-07-26T14:38:47.547 回答
1

您缺少ENDcase 表达式。

CASE WHEN tblWellReadingResult_7.test_code LIKE '%CBD%' THEN @CBD  
    ELSE @LBC END AS [AssayType], 
于 2012-07-26T14:38:46.890 回答
0

为什么选择和变量?

更容易:

--select 
CASE WHEN tblWellReadingResult_7.test_code LIKE '%CBD%' THEN
'LBC' 
ELSE 'LBC' END AS [AssayType] --, and another fields
-- From yourTable
于 2012-07-26T14:41:16.287 回答