Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取错误“;关键字'附近的语法不正确;as'&引用;_Sql_Sql Server - Fatal编程技术网

Sql 获取错误“;关键字'附近的语法不正确;as'&引用;

Sql 获取错误“;关键字'附近的语法不正确;as'&引用;,sql,sql-server,Sql,Sql Server,我得到这个错误: 关键字“as”附近的语法不正确 但我不知道问题出在哪里 SELECT tef.TicketEntryId, tef.FieldName, CASE WHEN TRY_CONVERT(UNIQUEIDENTIFIER, tef.FieldValue) IS NOT NULL THEN lli.Name ELSE CASE WHEN tef.F

我得到这个错误:

关键字“as”附近的语法不正确

但我不知道问题出在哪里

SELECT 
    tef.TicketEntryId, tef.FieldName,
    CASE 
       WHEN TRY_CONVERT(UNIQUEIDENTIFIER, tef.FieldValue) IS NOT NULL 
          THEN lli.Name 
          ELSE 
             CASE 
                WHEN tef.FieldDataType = 'BOOL' 
                   THEN CAST(tef.FieldValue AS BIT)
                   ELSE tef.FieldValue 
             END AS FieldValue
FROM 
    TicketEntry.TicketExtendedField tef
LEFT JOIN 
    RefList.LookupListItem lli ON CAST(lli.LookupListItemId AS VARCHAR(36)) = tef.FieldValue
WHERE 
    tef.TicketEntryId = 'bc18a2e9-441f-433f-bd1f-ddb646758584'

抛出错误的行是
ELSE tef.FieldValue END as FieldValue

您结束了一个
CASE
语句,而忘记结束另一个语句

更改此行:

ELSE tef.FieldValue END AS FieldValue


基本上,没有理由使用两种大小写表达式:


也就是说,此
案例
或您的版本存在键入问题。
case
表达式返回一个值和一种类型。你为什么要把这个值作为一点来计算呢?大概
案例
的预期返回类型是
varchar()
,因此它永远不会返回
值。但是,尝试转换可能会导致错误。

非常感谢。我已经盯着那句话看了一段时间了。这是我的一个同事写的。有时,你需要的只是另一组眼睛。我没有编写代码,但它被转换到了一点,因为它是bool字段,需要是bool字段而不是字符串才能在DevExpress报告中使用复选框。这有很多要解释的。@RaniRadcliff。我只是说,
案例
的结果有点小(因为
cast()
),这可能会导致问题。
ELSE tef.FieldValue END END AS FieldValue
SELECT tef.TicketEntryId, tef.FieldName,
       (CASE WHEN TRY_CONVERT(UNIQUEIDENTIFIER, tef.FieldValue) IS NOT NULL 
             THEN lli.Name 
             WHEN tef.FieldDataType = 'BOOL' 
             THEN CAST(tef.FieldValue AS BIT)
             ELSE tef.FieldValue
        END) as FieldValue
FROM TicketEntry.TicketExtendedField tef LEFT JOIN
     RefList.LookupListItem lli
     ON CAST(lli.LookupListItemId AS VARCHAR(36)) = tef.FieldValue
WHERE tef.TicketEntryId = 'bc18a2e9-441f-433f-bd1f-ddb646758584';