具有GROUP BY和列别名的ProvideX/Sage ODBC驱动程序 脚本: Sage 100 ERP ProvideX ODBC驱动程序32位 包含列别名和GROUP BY语句的标准SQL语句。 评论:

具有GROUP BY和列别名的ProvideX/Sage ODBC驱动程序 脚本: Sage 100 ERP ProvideX ODBC驱动程序32位 包含列别名和GROUP BY语句的标准SQL语句。 评论:,sql,odbc,sage-erp,Sql,Odbc,Sage Erp,我们在标准Sage 100 ERP环境中使用PVX/Sage ODBC连接器。否则司机工作正常 示例: 1.简单列别名 2.计算列别名 3.按计算分组 结果: 找不到错误[S0000][ProvideX][ODBC驱动程序]列:列 找不到错误[S0000][ProvideX][ODBC驱动程序]列:列 错误[37000][ProvideX][ODBC驱动程序]未找到预期的词法元素:空白 总结: 这是ProvideX驱动程序的错误,还是SQL查询的错误? 对于这种情况,是否有任何已知的解决方法?

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

示例: 1.简单列别名 2.计算列别名 3.按计算分组 结果: 找不到错误[S0000][ProvideX][ODBC驱动程序]列:列 找不到错误[S0000][ProvideX][ODBC驱动程序]列:列 错误[37000][ProvideX][ODBC驱动程序]未找到预期的词法元素:空白 总结: 这是ProvideX驱动程序的错误,还是SQL查询的错误? 对于这种情况,是否有任何已知的解决方法?
澄清:我不是专门为这个确切的用例寻找解决方案,而是为列别名/组合分组寻找一个通用解决方案。

在与Sage和ProvideX进行了长时间的往返之后,以下是关于使用Sage MAS 100 ERP连接器的GROUP BY的结论:由于Sage的定制,对于Sage驱动程序,ProvideX文档并不准确。Sage MAS 100 ERP使用的ODBC驱动程序不支持带有GROUP BY语句的别名或函数。GROUP BY语句必须采用GROUP BY[实际列]的形式


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

使用分组依据发票日期。例如,是,从技术上讲,这是可行的,但如果第一列是需要按分组的计算列,即如果您希望从InvoiceDate字段提取月份,然后按该月份分组,则不可行。这在MySQL中是可能的,但在这里不能使用相同的SQL。
SELECT  InvoiceDate as TheColumn,
        SUM(NonTaxableSalesAmt) as Total    
    FROM AR_InvoiceHistoryHeader
    WHERE InvoiceDate <= {d[startdate]} AND InvoiceDate >= {d[enddate]}
    GROUP BY TheColumn
SELECT  {fn MONTH(InvoiceDate)} as TheColumn,
        SUM(NonTaxableSalesAmt) as Total    
    FROM AR_InvoiceHistoryHeader
    WHERE InvoiceDate <= {d[startdate]} AND InvoiceDate <= {d[enddate]}
    GROUP BY TheColumn
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)}