使用GROUP BY和列别名提供X / Sage ODBC驱动程序

时间:2015-10-28 17:58:14

标签: sql odbc sage-erp

情景:

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

评论:

我们正在使用带有标准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. GROUP BY Calculation

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驱动程序]未找到预期的词法元素:(空白)
  4. 要点:

    1. 这是ProvideX驱动程序的错误,还是我的SQL查询错误?
    2. 这种情况是否有任何已知的解决方法?
    3. 澄清:我并不是专门为这个确切的用例寻找解决方案,而是列别名/ GROUP BY组合的一般解决方案。

1 个答案:

答案 0 :(得分:0)

经过与Sage和ProvideX的长期反复,以下是GROUP BY与Sage MAS 100 ERP连接器的结论:由于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中执行复杂查询。