此问题可能之前已经回答,但我无法找到如何获得这几个月的最新记录。
问题是我在同一个月有一张桌子,有时候排2行。我不能使用聚合函数(我猜)导致在2行中,我有不同的数据,我需要得到最新的。
实施例:
name Date nuA nuB nuC nuD
test1 05/06/2013 356 654 3957 7033
test1 05/26/2013 113 237 399 853
test3 06/06/2013 145 247 68 218
test4 06/22/2013 37 37 6 25
test4 06/27/2013 50 76 20 84
test4 05/15/2013 34 43 34 54
我需要得到一个结果:
test1 05/26/2013 113 237 399 853
test3 06/06/2013 145 247 68 218
test4 05/15/2013 34 43 34 54
test4 06/27/2013 50 76 20 84
**在我的例子中,数据是有序的,但在我的真实表中,数据不是有序的。
现在我有类似的东西:
SELECT Name, max(DATE) , nuA,nuB,nuC,nuD
FROM tableA INNER JOIN
Group By Name, nuA,nuB,nuC,nuD
但它没有按照我想要的方式工作。
提前致谢
似乎我不明白我的问题...... 所以我在我的例子中添加一些数据来向你展示我是如何做到的。 谢谢你们
答案 0 :(得分:2)
使用SQL Server ranking functions。
select name, Date, nuA, nuB, nuC, nuD from
(Select *, row_number() over (partition by name, datepart(year, Date),
datepart(month, Date) order by Date desc) as ranker from Table
) Z
where ranker = 1
答案 1 :(得分:0)
你能不能只做一个订单
select * from tablename where Date = (select max(Date) from tablename)
然后只拉动前3?
答案 2 :(得分:0)
试试这个
SELECT t1.* FROM Table1 t1
INNER JOIN
(
SELECT [name],MAX([date]) as [date] FROM Table1
GROUP BY [name],YEAR([date]),MONTH([date])
) t2
ON t1.[date]=t2.[date] and t1.[name]=t2.[name]
ORDER BY t1.[name]