ProvideX/Sage 具有 GROUP BY 和列别名的 ODBC 驱动程序

ProvideX/Sage ODBC Driver with GROUP BY and Column Alias

场景:


评论:

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


示例:

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. 按计算分组

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. 对于这种情况是否有任何已知的解决方法?

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

在与 Sage 和 ProvideX 进行了长时间的交流之后,这里是使用 Sage MAS 100 ERP 连接器进行 GROUP BY 的结论:ProvideX 文档对于 Sage 驱动程序不准确,因为部分自定义智者。与 Sage MAS 100 ERP 一起使用的 ODBC 驱动程序不支持带有 GROUP BY 语句的别名或函数。 GROUP BY 语句必须采用 GROUP BY [实际列].

的形式

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