【发布时间】:2011-11-11 03:02:10
【问题描述】:
我有一个数据库表,用于存储每年的会员续订情况。插入续订记录时,会在“expiryDate”列中写入日期(31/8/[明年])。
因此,例如,假设成员 ID = 99 的成员在 2007 年、2008 年和 2009 年续订,他将有 3 条记录(每年一条),每条记录都有一个“到期日期”。如果我做一个
SELECT MAX(YEAR(expiryDate)) as maxExpiry
FROM renewals
WHERE memberID = 99
...我会回到 2010 年。
我想做的是返回MAX(YEAR(expiryDate)) 是给定年份的所有记录。例如,
SELECT *
FROM renewals
WHERE MAX(YEAR(expiryDate)) = '2010';
这个查询不起作用,因为聚合不能在子查询之外的 where 子句中使用,但我不知道如何构造子查询......或者即使这可以做得更好比使用子查询的方式。
【问题讨论】:
标签: sql sql-server aggregate-functions