来自sql server

时间:2015-09-04 09:25:51

标签: sql-server

date    maxval
19/08/2015  1
19/08/2015  2
19/08/2015  2
19/08/2015  1
20/08/2015  6
20/08/2015  7
20/08/2015  8
20/08/2015  9

期望的输出                date maxval            2015年8月19日2            2015年8月19日2            2015年8月20日9

需要重复的最大值,例如,如果19/08/2015在6中是最大值,但我有重复所以要求max和20/08/2015只有一个最大值所以它显示一个最大值请我们如何得到来自sql server query。

"

2 个答案:

答案 0 :(得分:1)

这是您的查询

Select date, max(maxval) 
from tab
group by date
order by date

答案 1 :(得分:1)

您可以使用DENSE_RANK()为每条记录在每个日期内排名。然后只需过滤前1(WHERE t.dr = 1)的记录。使用DENSE_RANK()而非ROW_NUMBER()将允许重复:

SELECT  Date, MaxVal
FROM    (   SELECT  Date, 
                    MaxVal,
                    dr = DENSE_RANK() OVER(PARTITION BY Date ORDER BY MaxVal DESC)
            FROM    YourTable
        ) AS t
WHERE   t.dr = 1;