如何获得courseName ='Music'的最新日期?使用同一个对象名称获取最新记录
courseName | dateOfEnrollment
----------------|-----------------------
Music | 2016-07-24
Art | 2016-07-01
Art | 2016-07-23
Music | 2016-07-25
当我用下面的语句尝试以下
SELECT courseName, dateOfEnrollment FROM MyDatabase.dbo.courseEnrollment WHERE courseName = 'Music' AND GETDATE() >= MAX(dateOfEnrollment)
返回错误:
An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference.
我的最终目标是把这一声明在IF语句,如果它不为空,那么我会在表格中插入新的数据。
更新(我回答):
这是为我工作:
IF EXISTS (SELECT TOP 1 courseName, dateOfEnrollment FROM courseEnrollment WHERE courseName = 'Music' ORDER BY dateOfEnrollment DESC)
*Insert data into the table*
ELSE
*No need to insert*
如果有两个或两个以上的记录包含最新的同一天又是什么情况? – Sadikhasan
在那里发现两个问题。 1)'ORDER BY dateOfEnrollment'意思是'日期的升序(但预期是降序)'2)如果'Music'下有多个条目具有最新日期,那么输出中将始终为1。 – 1000111
嗨@Damiano,谢谢你的回复。我可以知道如何将整个查询放入IF语句中?假设没有结果返回,那么表不会被更新。否则更新表格。 – YWah