0

设想:

  • 贤者 100 ERP
  • ProvideX ODBC 驱动程序(32 位)
  • 包含列别名和 GROUP BY 语句的标准 SQL 语句。

注释:

我们将 PVX/Sage ODBC 连接器与标准 Sage 100 ERP 环境一起使用。驱动程序正常工作,否则。


例子:

1.简单的列别名

SELECT  InvoiceDate as TheColumn,
        SUM(NonTaxableSalesAmt) as Total    
    FROM AR_InvoiceHistoryHeader
    WHERE InvoiceDate <= {d[startdate]} AND InvoiceDate >= {d[enddate]}
    GROUP BY TheColumn

2.计算列别名

SELECT  {fn MONTH(InvoiceDate)} as TheColumn,
        SUM(NonTaxableSalesAmt) as Total    
    FROM AR_InvoiceHistoryHeader
    WHERE InvoiceDate <= {d[startdate]} AND InvoiceDate <= {d[enddate]}
    GROUP BY TheColumn

3. GROUP BY 计算

SELECT  {fn MONTH(InvoiceDate)} as TheColumn,
        SUM(NonTaxableSalesAmt) as Total    
    FROM AR_InvoiceHistoryHeader
    WHERE InvoiceDate <= {d[startdate]} AND InvoiceDate <= {d[enddate]}
    GROUP BY {fn MONTH(InvoiceDate)}

结果:

  1. 错误 [S0000] [ProvideX][ODBC 驱动程序]列未找到:TheColumn
  2. 错误 [S0000] [ProvideX][ODBC 驱动程序]列未找到:TheColumn
  3. 错误 [37000] [ProvideX][ODBC 驱动程序] 找不到预期的词法元素:(空白)

概括:

  1. 这是 ProvideX 驱动程序的错误,还是我的 SQL 查询错误?
  2. 这种情况是否有任何已知的解决方法?

澄清:我并不是专门为这个确切的用例寻找解决方案,而是为 Column Alias/GROUP BY 组合寻找通用解决方案。

4

1 回答 1

0

经过与 Sage 和 ProvideX 的长期反复讨论,以下是使用 Sage MAS 100 ERP 连接器的 GROUP BY 的结论:由于 Sage 的自定义,ProvideX 文档对于 Sage 驱动程序不准确。Sage MAS 100 ERP 使用的 ODBC 驱动程序不支持具有 GROUP BY 语句的别名或函数。GROUP BY 语句必须采用 GROUP BY [实际列] 的形式。

另一种解决方法是使用简单查询(不带 GROUP BY 的 SELECT),或者 1)在应用程序中执行 GROUP BY 操作,或者 2)将数据作为传递查询导入 Microsoft Access 或另一个 DBMS,然后执行Access 中的复杂查询。

于 2015-11-02T16:12:48.480 回答