我有一个名为IJ
的表,其日期时间列为IJDATE
,varchar列为IJLOC
和IJITEM
。我需要这两列的每个组合的最新行(并包括其他列,如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列进行分组,但后来我不能包含其他列。
答案 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;