我想写一个查询,将只返回最新的结果。我从中提取信息的表没有唯一列,并且包含有关费率变化的信息,因此对于任何特定的客户端,可能存在多个费率变化 - 我只希望每个客户端的最新费率变化。选择最近的日期
结构为:
mrmatter VARCHAR(14)
mrtk VARCHAR(14)
mreffdate DATETIME
mrtitle VARCHAR(100)
mrrate INT
mrdevper INT
一些样本数据:
mrmatter mrtk mreffdate mrtitle mrrate mrdevper
184-00111 0005 2001-03-19 00:00:00.000 ! 250 NULL
184-00111 0259 2001-03-19 00:00:00.000 ! 220 NULL
184-00111 9210 2001-03-19 00:00:00.000 ! 220 NULL
184-00111 0005 2007-07-01 00:00:00.000 ! NULL NULL
从以上数据可以看到在两个mrtk(0005),从这些结果应该只返回三个而不是四行。
查询不只是在mrtk,而不是mrtk可能有一个mrtitle在这种情况下,我需要找到最近的日期,当有多个。
我已经尝试过下面的查询,它返回的结果排序在最新到最旧,但它返回四行(两个0005),而不是只有三个。我已经尝试了不同的方式来做同样的查询,但它都返回相同的结果。
SELECT mrmatter,mrtk,mrrate,MAX(mreffdate) AS 'MostRecent'
FROM mexrate
WHERE mrmatter='184866-00111'
GROUP BY mrmatter,mrtk,mrrate
任何可以提供的援助将不胜感激。
更新: mrrate列可以包含空值,并且空值可以是最新的条目。我所追求的是同一个mrmatter AND(mrtk或mrtitle)的最新条目。
一些更样本数据是:
mrmatter mrtk mrtk mrrate mreffdate
100626-01406 Senior Assoc ! 235.000 2006-01-25 00:00:00.000
100626-01406 Solicitor ! 235.000 2006-01-25 00:00:00.000
100626-01407 Associate ! 265.000 2006-01-30 00:00:00.000
100626-01407 Associate ! 276.000 2007-07-01 00:00:00.000
100626-01407 Partner ! 265.000 2006-01-30 00:00:00.000
100626-01407 Partner ! 276.000 2007-07-01 00:00:00.000
100626-01407 Senior Assoc ! 265.000 2006-01-30 00:00:00.000
100626-01407 Senior Assoc ! 276.000 2007-07-01 00:00:00.000
马特
您能否提供一个CREATE TABLE和INSERT语句。这会容易得多。在发布像SQL这样的东西时,您应该使用代码块,以便突出显示。 – 2009-07-06 08:33:07