0

这个问题之前可能已经回答过了,但我找不到如何获得这几个月的最新记录。

问题是我有一张桌子,同一个月有时有 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

但它没有按我的意愿工作。

提前致谢

编辑1:

我的问题似乎不清楚......所以我在我的例子中添加了一些数据来告诉你我需要怎么做。多谢你们

4

3 回答 3

2

使用 SQL Server排名函数

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
于 2013-06-28T15:24:01.507 回答
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]
于 2013-06-28T15:26:29.830 回答
-1

你能不能只做一个订单

select * from tablename where Date = (select max(Date) from tablename)

其次只拉前3个?

于 2013-06-28T15:25:57.500 回答