MS SQL Server(如何基于计数(*)和日期获取记录

MS SQL Server(如何基于计数(*)和日期获取记录,sql,sql-server-2008,Sql,Sql Server 2008,我在MS SQL Server中有要求,按计数顺序获取关键字组,如果计数值相同,则最新计数应位于顶部 表-字段 id, keyword, datetime 质疑 在这里,若计算相同的关键字,它应该按日期时间排序 谢谢, 请将您的订单更改为: ORDER BY count(*) DESC,datetime DESC 您可以按顺序排列多个列,并按您放置它们的顺序排列。在这种情况下,您首先按count(*)排序,然后,具有相同count(*)的列按datetime排序 编辑: 重新阅读你的问题,我

我在MS SQL Server中有要求,按计数顺序获取关键字组,如果计数值相同,则最新计数应位于顶部

表-字段

id, keyword, datetime
质疑

在这里,若计算相同的关键字,它应该按日期时间排序

谢谢,
请将您的订单更改为:

ORDER BY count(*) DESC,datetime DESC
您可以按顺序排列多个列,并按您放置它们的顺序排列。在这种情况下,您首先按
count(*)
排序,然后,具有相同
count(*)
的列按
datetime
排序

编辑:


重新阅读你的问题,我发现我的回答并不完全准确。是的,你可以按多列排序,但在你的例子中,你有一个聚合函数(
COUNT(*)
)在那里,这会给你一个错误,除非你把
datetime
也放在
组中。

我想这就是你要找的:

SELECT keywords, count( * ) counts 
FROM t 
GROUP BY keywords 
ORDER BY count( * ), max(date) desc 
样本数据:

create table t(keywords varchar(50), date date)

insert into t values
('x','20130901'),('x','20130904'),
('y','20130901'),('y','20130902'),('y','20130903'),
('z','20130903'),('z','20130906')
结果():


您的问题/错误消息是什么?感谢您的快速回复,我在查询count(*)时也做了同样的操作desc,datetime desc,但它不基于日期,实际结果关键字计数datetime Google 20 01/09/2013 10:10 Gplus 2 01/09/2013 10:12 yahoo 2 01/09/2013 10:13在此情况下,Gplus和yahoo计数都是相同的,基于时间,它应该显示预期结果Google 20 01/09/2013 10:10 yahoo 2 01/09/2013 10:13 Gplus 2 01/09/2013 10:12我也尝试过同样的方法,当我对每页进行分页时,它会按最大值(日期)获取订单。此查询满足您的要求
如果计数相同,最新值应位于顶部
。按计数(*)排序后,您需要
按最大值(日期)排序。我的简历类似于此实际结果关键字计数日期时间Google 20 01/09/2013 10:10 Gplus 2 01/09/2013 10:12 yahoo 2 01/09/2013 10:13在此情况下,Gplus和yahoo计数都是相同的,并且基于时间它应该显示预期结果Google 20 01/09/2013 10:10 yahoo 2 01/09/2013 10:13 Gplus 2 01/09/2013年10月12日这正是上面的查询所做的
按计数(*)、最大(日期)说明排序
create table t(keywords varchar(50), date date)

insert into t values
('x','20130901'),('x','20130904'),
('y','20130901'),('y','20130902'),('y','20130903'),
('z','20130903'),('z','20130906')
| KEYWORDS | COUNTS |    MAXDATE |
-----------|--------|------------|--
|        z |      2 | 2013-09-06 |
|        x |      2 | 2013-09-04 |
|        y |      3 | 2013-09-03 |