我想寫一個查詢,將只返回最新的結果。我從中提取信息的表沒有唯一列,並且包含有關費率變化的信息,因此對於任何特定的客戶端,可能存在多個費率變化 - 我只希望每個客戶端的最新費率變化。選擇最近的日期
結構爲:
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