我有一张表如:
C1 |C2 |C3 |C4
int|int|int|datetime (day and HH:MM:SS)
我需要写一个查询,每个C1和C2返回最新的C3(就C4而言),它应该是C1(asc),C2(asc)的顺序。
ex:
C1|C2|C3|C4
4 |4 |4 |02.02.2016 10:20:00
4 |4 |6 |02.02.2016 10:21:00
3 |1 |5 |02.02.2016 10:18:00
2 |8 |73 |02.02.2016 11:23:00
5 |3 |-2 |02.02.2016 09:23:00
returns:
C1|C2|C3 =>C1 and C2 asc order!
2 |8 |73
3 |1 |5
4 |4 |6
5 |3 |-2
答案 0 :(得分:0)
对于SQL Server,您可以使用CTE。此CTE根据c1 / c2配对分配行号,最近的c4(日期)为1。
with n as(
select
c1,
c2,
c3,
ROW_NUMBER over (partition by c1, c2, order by c4 desc) as rn
from someTable)
select c1, c2, c3 from n where rn = 1 order by c2
答案 1 :(得分:0)
将此以下查询用于您的目的,
SELECT max(c1),max(c2),max(c3) FROM `table1` GROUP by c1,c2 order by c4 desc,c1 asc,c2 asc