所以,我有一个表,我想从记录中的一个字段中获取值,该字段在另一个字段中具有最大的 DateTime() 值,并且另一个字段等于某个值。
示例数据:
Balance Created MeterNumber
7924.252 02/02/2010 10:31:48 AM 2743800
7924.243 02/02/2010 11:01:37 AM 2743876
7924.227 02/02/2010 03:55:50 PM 2743876
我想为特定仪表编号的创建日期时间最长的记录获取余额。在 VFP 7 中,我可以使用:
SELECT a.balance ,MAX(a.created) FROM MyTable a WHERE a.meternumber = '2743876'
但是,在我在我的 ASP.NET 页面中使用的 VFP v8.0 OleDb 驱动程序中,我必须符合 VFP 8,它表示您必须有一个 GROUP BY 列出 SELECT 中列出的每个非聚合字段。GROUP BY a.balance
如果我添加到查询中,这将返回每个余额的记录。
是的,我可以发出 aSET ENGINEBEHAVIOR 70
但我想知道这是否可以在不必恢复到以前版本的情况下完成?
编辑 我确实让 Frank Perez 查询工作,但只有在将 DateTime 字段转换为 SQL IN 子句的字符之后。请注意使用 TTOC() 函数包装 DateTime 字段。
SELECT ;
MyTable.created, ;
MyTable.balance ;
FROM ;
MyTable ;
WHERE ;
( MyTable.meternumber = '2743876' ) ;
AND ( TTOC(MyTable.created) IN (SELECT TTOC(MAX(created)) FROM MyTable WHERE (meternumber = '2743876')) ) ;