我们在将 Visual FoxPro 迁移到 SQL Sever 时遇到了一些严重问题。
我对 FoxPro 了解不多。。任何完成此迁移的人都可以帮助我解决下面的问题
如何编写一个等效的 SQL 语句以SET ENGINEBEHAVIOR 70 (SET ENGINEBEHAVIOR 80)在 FoxPro 中找到.. 目的是什么SET ENGINEBEHAVIOR?我读到了一些地方,它列出了既不是聚合函数的一部分,也不是 group by 子句的所有字段。
任何帮助深表感谢!
我们在将 Visual FoxPro 迁移到 SQL Sever 时遇到了一些严重问题。
我对 FoxPro 了解不多。。任何完成此迁移的人都可以帮助我解决下面的问题
如何编写一个等效的 SQL 语句以SET ENGINEBEHAVIOR 70 (SET ENGINEBEHAVIOR 80)在 FoxPro 中找到.. 目的是什么SET ENGINEBEHAVIOR?我读到了一些地方,它列出了既不是聚合函数的一部分,也不是 group by 子句的所有字段。
任何帮助深表感谢!
我相信那是 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,我认为不再需要此声明。
第十二是关于 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 也支持这种不要求“非聚合”列的行为。