【问题标题】:Unexpected token: 'less than' symbol in SQL query意外标记:SQL 查询中的“小于”符号
【发布时间】:2020-08-22 03:34:50
【问题描述】:

我正在尝试在 Excel 宏中使用 ADODB 通过 SQL 查询从 DB2 表中提取数据。我遇到了由查询中的表达式引起的错误。相关代码如下 - 问题来自第一行的 IIF 语句。 (我正在处理的项目中的其他 SQL 查询已顺利完成。)

SQL_input = SQL_input & "SELECT DB2.TABLE1.CAT, DB2.TABLE1.BRD, DB2.TABLE1.ITEM, Sum(IIF(ITEM_ORD_Q-ITEM_RECV_Q < 0,0,ITEM_ORD_Q-ITEM_RECV_Q)) AS OO" & vbCrLf
SQL_input = SQL_input & "FROM DB2.TABLE2 INNER JOIN DB2.TABLE ON (DB2.TABLE2.ITEM = DB2.TABLE1.ITEM) AND (DB2.TABLE2.BRD = DB2.TABLE1.BRD) AND (DB2.TABLE2.CAT = DB2.TABLE1.CAT)" & vbCrLf
SQL_input = SQL_input & "WHERE (((DB2.TABLE2.ITEM_GRP_CAT)=" & cat & ") AND ((DB2.TABLE2.ITEM_GRP_code_C)='" & code & "'))" & vbCrLf
SQL_input = SQL_input & "GROUP BY DB2.TABLE1.CAT, DB2.TABLE1.BRD, DB2.TABLE1.ITEM;"

AdoRS1.Open (SQL_input)

我收到的错误是:SQL0104N 在“”之后发现了一个意外的标记“

有谁知道我可以如何更改查询的字符串以使其正常工作?

谢谢!!

【问题讨论】:

    标签: sql excel vba db2 adodb


    【解决方案1】:

    AFAIK - DB2 不支持IIF,这是一种 MS Access 和 SQL Server (2012+) 方法。考虑一下CASE 的 ANSI SQL 对应物,几乎在所有 SQL 方言中都可用:

    SUM(CASE 
            WHEN ITEM_ORD_Q-ITEM_RECV_Q < 0
            THEN 0
            ELSE ITEM_ORD_Q-ITEM_RECV_Q
        END) AS OO
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多