0

我们在将 Visual FoxPro 迁移到 SQL Sever 时遇到了一些严重问题。

我对 FoxPro 了解不多。。任何完成此迁移的人都可以帮助我解决下面的问题

如何编写一个等效的 SQL 语句以SET ENGINEBEHAVIOR 70 (SET ENGINEBEHAVIOR 80)在 FoxPro 中找到.. 目的是什么SET ENGINEBEHAVIOR?我读到了一些地方,它列出了既不是聚合函数的一部分,也不是 group by 子句的所有字段。

任何帮助深表感谢!

4

2 回答 2

1

我相信那是 FOXPro 中的兼容性声明......报告脚本是否包含该声明?如果您现在直接在 SQL 服务器上运行,则不需要它...我认为它主要用于 Foxpro 格式。

来自 MSDN 的完整信息在这里:http: //msdn.microsoft.com/en-us/library/aa978316 (v=vs.71).asp

编辑添加:实际上它似乎确实会影响分组行为。从链接:

您可以在 SELECT 列表中包含聚合函数,而无需在 GROUP BY 子句中包含它。例如,以下代码在字段 company 上使用 COUNT( ) 函数,但 GROUP BY 子句中没有字段 company。SELECT COUNT(company), country FROM Customer GROUP BY country

如果您要退出 FoxPro,我认为不再需要此声明。

于 2012-06-12T16:21:48.093 回答
1

第十二是关于 SET ENGINE BEHAVIOR 如何运作的准确信息。请注意,并非所有 SQL 数据库都支持此功能,并要求您在执行 SQL 查询时输入所有非聚合列。

假设您在订单表中有 10 条客户记录,并且想要计算订单,但该表还有订单日期、总金额、送货地址等。该人将不同的订单交付到不同的位置。 .. 通过做

select customerID, count(*) as NumberOfOrders, DeliverAddress, TotalOrder
   from orders 
   group by CustomerID

一些 SQL 引擎会唠叨您没有将“DeliverAddress”或“TotalOrder”作为 group by 的一部分。在 VFP 中,这些列将只返回为客户找到的第一条记录,而不管找到多少条记录。

我相信 MySQL 也支持这种不要求“非聚合”列的行为。

于 2012-06-12T19:12:30.400 回答