它返回按CountOfRecords DESC排序的所有行。我想在这里只有七排,显示特定日期的最高价值。所以一周中的每一天都应该只发生一次。这可能没有很多痛苦吗?SQL - 选择一周中的每一天的最高记录数
SELECT
Count(*) As CountOfRecords,
CAST(FLOOR(CAST([visit].[datetimeentered] AS float)) AS smalldatetime) AS DateEntered,
DatePart(dw, visit.datetimeentered) As DayOfTheWeek
FROM visit
INNER JOIN useragent ON useragent.useragentid = visit.useragentid
WHERE useragent.isbot = 0
GROUP BY CAST(FLOOR(CAST([visit].[datetimeentered] AS float)) AS smalldatetime),
DatePart(dw, visit.datetimeentered)
ORDER BY CountOfRecords DESC
EDIT1:
我觉得两个答案都在同样的事情得到。我已经接受了首先发布的那个。我也要提到它的工作原理,而另一个则没有。我收到以下错误,当我运行marc_s的查询:
Msg 207, Level 16, State 1, Line 29
Invalid column name 'RowNum'.
Msg 207, Level 16, State 1, Line 25
Invalid column name 'CountOfRecords'.
Msg 207, Level 16, State 1, Line 26
Invalid column name 'DateEntered'.
Msg 207, Level 16, State 1, Line 27
Invalid column name 'DayOfTheWeek'.
特别感谢marc_s您指出一个简单的方法来获得仅从日期时间的日期部分。
你已经将数据分组在看起来是你问题的正确方法 - 是否有一个原因,你不能添加MAX(fieldname),其中fieldname是你想要的最高可用值的字段 - 到你的SELECT ? – 2011-04-28 20:11:26
什么数据库产品和版本?它闻起来像SQL Server。如果是这样,什么版本? – Thomas 2011-04-28 20:21:30
我没有提到这是SQL Server 2008.我试过了你的建议,但它没有奏效。 – HK1 2011-04-28 20:21:46