在查询中组合WHERE和HAVING子句

时间:2019-08-02 15:39:05

标签: sql-server where-clause having-clause

我有以下查询

SELECT  analysis, start, stop
FROM table     
GROUP BY start    
WHERE userid = 12 AND playerid = 67     
HAVING CAST(start AS date) = MAX(CAST(start AS date))    
ORDER BY start ;  

开始和停止的日期时间类型,例如2016-10-23 00:00:00.000

同一天我们有很多。 我想在同一天(最后一天)开始/停止所有活动。

所以,我的逻辑是获取最大日期(=今天)的所有开始和结束日期时间

所以如果今天是2016-10-23,请获取所有开始和结束的地方

`2016-10-23 00:10:00.000`
`2016-10-23 00:20:00.000`
`2016-10-23 00:40:00.000`
`2016-10-23 00:80:00.000`

我得到的错误是incorrect syntax near the keyword WHERE

我该如何解决?

谢谢

1 个答案:

答案 0 :(得分:3)

您要选择所有日期为表中最大日期的行。一个主要查询,用于显示要显示的行,一个子查询,用于查询子句中最长的一天,

select *
from mytable
where cast(start as date) = (select max(cast(start as date)) from mytable);