当前位置: 首页 > 面试题库 >

SQL Server CASE .. WHEN .. IN语句

马煌
2023-03-14
问题内容

在SQL Server 2005上,我正在尝试查询此选择语句

SELECT AlarmEventTransactionTableTable.TxnID,
       CASE AlarmEventTransactions.DeviceID
         WHEN DeviceID IN( '7', '10', '62', '58',
                           '60', '46', '48', '50',
                           '137', '139', '142', '143', '164' )
           THEN '01'
         WHEN DeviceID IN( '8', '9', '63', '59',
                           '61', '47', '49', '51',
                           '138', '140', '141', '144', '165' )
           THEN '02'
         ELSE 'NA'
       END AS clocking,
       AlarmEventTransactionTable.DateTimeOfTxn
FROM   multiMAXTxn.dbo.AlarmEventTransactionTable

它返回下面的错误

消息156,级别15,状态1,第4行关键字“ IN”附近的语法错误。

请给我一些有关我的代码可能出问题的建议。


问题答案:

CASE AlarmEventTransactions.DeviceID应该只是CASE

您正在混合表达式的2种形式CASE



 类似资料:
  • 问题内容: 我需要在Spark中实现以下SQL逻辑 我的输入如下: 我已经实现了嵌套的情况,当声明为: 如果嵌套的when语句更进一步,则使用“ otherwise”语句的上述逻辑的可读性会很混乱。 在Spark中的语句时,有没有更好的方法来实现嵌套大小写? 问题答案: 这里没有嵌套,因此不需要。您所需的全部都是链式的: 是隐式的,因此您可以完全省略它。 您使用的模式更适用于数据结构: 其中-自然

  • 问题内容: 当表中的列不存在时,为什么此查询会删除所有用户? 初始查询 : 更具体。 IN语句查询返回 : 运行 初始查询 返回 为什么会这样呢? 它是否应该在发生错误时停止执行或返回false或null? 运行PostgreSQL Server 9.0 问题答案: 根据ANSI标准,此行为是正确的。 如果未限定的列名称未在内部作用域中解析,则将考虑外部作用域。因此,您有效地执行了无意关联的子查询

  • 问题内容: 以下是我当前的SELECT CASE语句: 我并不总是想重复版本=’xxx’的条件,例如 在Excel中,这相当容易,但是如何在PostgreSQL中进行编译呢? 问题答案: 试试这个

  • 问题内容: 我试图运行选择动态列表。就像是 在代码中,我徒劳的尝试是: 我对此的看法是,替换将我的逗号列表视为单个参数。我确实找到了解决方案,但它很难看,因此除非有人提出更优雅的方法,否则我不会在此处发布该解决方案 问题答案: 您不能只放置一个’?’ 而不是值列表。这样,尝试对列表进行参数化几乎没有任何好处。当然,可以创建2、4、16值的准备好的语句,但是即使在具有远程RDBMS的服务器上,它也有

  • 类似于编程语言的if When语句 有时候用户有可能需满足特定条件才执行某一个特定的步骤。在某一个特定版本的系统上装包,或者只在磁盘空间满了的文件系统上执行清理操作一样。这些操作在Ansible上,使用when语句都非常简单. 主机为Debian Linux立刻关机 tasks: - name: "shutdown Debian flavored systems" command: /

  • when宏后跟一个计算为t或nil的test子句。 如果test子句被计算为nil,则不评估任何形式并返回nil,但是测试结果是t,然后执行test子句之后的操作。 宏时的语法 - (when (test-clause) (<action<sub>1</sub>) ) 例子 (Example) 创建一个名为main.lisp的新源代码文件,并在其中键入以下代码。 (setq a 100) (wh