将Visual FoxPro存储过程转换为等效的MS SQL Server时出现问题

将Visual FoxPro存储过程转换为等效的MS SQL Server时出现问题,sql,visual-foxpro,Sql,Visual Foxpro,将Visual FoxPro迁移到SQL Server时遇到了一些严重问题 我对FoxPro不太了解。。任何完成此迁移的人都可以帮助我回答下面的问题 如何为FoxPro中的SET ENGINEBEHAVIOR 70(SET ENGINEBEHAVIOR 80)编写等效的SQL语句。。设置引擎行为的目的是什么?我读了一些文章,其中列出了既不属于聚合函数也不属于GROUPBY子句的所有字段 非常感谢您的帮助 我认为这是FOXPro中的兼容性声明……报表脚本是否包含该声明?如果您现在直接在SQL se

将Visual FoxPro迁移到SQL Server时遇到了一些严重问题

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

如何为FoxPro中的
SET ENGINEBEHAVIOR 70(SET ENGINEBEHAVIOR 80)
编写等效的SQL语句。。
设置引擎行为的目的是什么?我读了一些文章,其中列出了既不属于聚合函数也不属于GROUPBY子句的所有字段


非常感谢您的帮助

我认为这是FOXPro中的兼容性声明……报表脚本是否包含该声明?如果您现在直接在SQL server上运行,则不需要它……我认为它主要用于Foxpro格式

MSDN的完整信息如下:

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

您可以在SELECT列表中包含聚合函数,而无需将其包含在GROUP BY子句中。 例如,以下代码对字段公司使用COUNT()函数,而在GROUPBY子句中没有字段公司。 按国家/地区从客户组中选择计数(公司)、国家/地区


如果您要退出FoxPro,我认为不再需要这句话。

第十二句是关于设置引擎行为如何运行的准确说明。请注意,并非所有SQL数据库都支持此功能,并且在执行SQL查询时需要输入所有非聚合列

假设您在订单表中有一个客户的10条记录,并希望计算订单数量,但该表还有一个订单日期、总金额、交付地址等。此人将不同的订单交付到不同的位置。。。通过做

select customerID, count(*) as NumberOfOrders, DeliverAddress, TotalOrder
   from orders 
   group by CustomerID
一些SQL引擎会唠叨您没有将“DeliverAddress”或“TotalOrder”作为group by的一部分。在VFP中,这些列将只返回为客户找到的第一条记录,而不管找到了多少条记录


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

Wow。。那是一个非常快的回答!你的意思是我可以忽略SET ENGINEBEHAVIOR命令,继续重写其他foxpro语句?非常感谢你的帮助,乔恩!