项目和位置的每个组合的最新行

时间:2013-11-05 18:07:24

标签: tsql sql-server-2012-express

我有一个名为IJ的表,其日期时间列为IJDATE,varchar列为IJLOCIJITEM。我需要这两列的每个组合的最新行(并包括其他列,如IJLCGT,一个整数,用于最近的行)。例如,从这些数据:

IJLOC   IJITEM      IJDATE      IJLCGT
Reno    12X12X12PX  2013-07-29  175705
Reno    12X12X12PX  2013-08-14  125905

我想要这个结果(因为它是该组合的最新行):

IJLOC   IJITEM      IJDATE      IJLCGT
Reno    12X12X12PX  2013-08-14  125905

我尝试过使用MAX并对varchar列进行分组,但后来我不能包含其他列。

1 个答案:

答案 0 :(得分:4)

无论是谁给你的专栏命名都需要他们的指关节来满足一个快速移动的统治者。

;WITH cte AS 
(
  SELECT IJLOC, IJITEM, IJDATE, IJLCGT,
    rn = ROW_NUMBER() OVER (PARTITION BY IJITEM, IJLOC ORDER BY IJDATE DESC)
  FROM dbo.IJ
)
SELECT IJLOC, IJITEM, IJDATE, IJLCGT
FROM cte WHERE rn = 1;