我们在将 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 也支持这种不要求“非聚合”列的行为。