2016-05-25 127 views
-1

我有一個表,其中,具有記錄等,只選擇最大值記錄多行

Unit Rate DateEffected 
------------------------------------------- 
ALHA ILS  2014-03-02 00:00:00.000 
ALHA ILS  2014-08-02 00:00:00.000 
BUCK ILS  2013-02-14 00:00:00.000 
BUCK ILS  2014-03-02 00:00:00.000 
BUCK ILS  2014-08-02 00:00:00.000 
CASC ILD  2013-02-14 00:00:00.000 
CASC ILD  2014-03-02 00:00:00.000 
CASC ILD  2014-08-02 00:00:00.000 

現在,我想在結果表中只有最大日期值的記錄選擇。這是,

Unit Rate DateEffected 
------------------------------------------- 
ALHA ILS  2014-08-02 00:00:00.000 
BUCK ILS  2014-08-02 00:00:00.000 
CASC ILD  2014-08-02 00:00:00.000 
+0

請格式化你的數據,因此它會很容易讓我們理解。還指示表名和列名 – jelliaes

+0

查看MAX和GROUP BY運算符,它們正是您所追求的內容。 –

回答

2

希望這會有所幫助。

SELECT 
Unit, 
Rate, 
MAX(DateEffected) AS MaxDateEffected 
FROM TableName 
GROUP BY Unit,Rate 
+0

如果我想用於連接查詢然後呢? – damini

+0

我認爲你不需要在這裏參加任何活動。 – Sandesh

+0

我想用它與其他表。 – damini

2

您可以使用ROW_NUMBER此:

SELECT Unit, Rate, DateEffected 
FROM (
    SELECT Unit, Rate, DateEffected, 
     ROW_NUMBER() OVER (PARTITION BY Unit 
          ORDER BY DateEffected DESC) AS rn 
FROM mytable) AS t 
WHERE t.rn = 1 
+0

爲什麼不能簡單的通過group? – sagi

+0

這是正確的(正如其他答案)。但是,請注意,如果有兩個記錄包含最大日期,則只會返回一條記錄。如果這不是必需的,應該使用'DENSE_RANK()'或'RANK()'。 – HoneyBadger