如何使用MAX作为聚合函数获取全记录

时间:2018-07-09 17:55:17

标签: sql sql-server

我有一个带有架构的表(ID,日期,值,源,代码)。我想获取按日期在 sql服务器

中具有最高ID组的记录

示例数据

ID|date|value|source|ticker

3|10-Dec-2017|10|a|b

1|10-Dec-2017|11|p|q

以下查询在Sqlite中有效。我们是否可以使用SqlServer做到这一点

select max(id), date, value, source, ticker from table group by date

预期收益:-

ID|date|value|source|ticker

3|10-Dec-2017|10|a|b

我还可以对具有相同模式的2个表的 UNION 进行相同的操作。

2 个答案:

答案 0 :(得分:1)

您可以使用subquery

select t.*
from table t
where id = (select max(t1.id) from table t1 where t1.date = t.date);

但是,您也可以使用row_number()函数:

select top (1) with ties *
from table t
order by row_number() over (partition by [date] order by id desc);

答案 1 :(得分:0)

您也可以像下面这样:

select t1.* from table1 t1
join (
      select max(id) as id, [date] from table1
      group by [date]
     ) as t2 on t1.id = t2.id

SQL HERE