2016-05-25 128 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