通过maxdate列从临时表中选择无重复记录

时间:2011-11-15 18:46:49

标签: sql sql-server-2005

我有临时表的结果(如下面的存储过程),我想从这个临时表中只提取最大stage_dt的记录,这将删除客户列表中的重复项。 rownum列是标识。如何从此临时表中仅选择列stage_dt中具有最大日期的记录?

lname     fname   RO#      fow_visit   stage_dt                 T_Stage  status  rownum
ADINYIRA  DELA    09-0373  2011-10-06  2010-09-28 17:02:30.460           Y       6
ADINYIRA  DELA    09-0373  2011-10-06  2009-10-08 12:50:33.007  T2       Y       7
APPELLO   CAROL   08-0493  2011-04-13  2011-04-08 12:48:31.310           Y       40
APPELLO   CAROL   08-0493  2011-04-13  2008-10-13 18:20:49.210  4        Y       41
BLACK     ERMA    10-0054  2011-10-06  2010-02-02 16:04:42.273  T0       Y       90
BLACK     ERMA    10-0054  2011-10-06  2010-02-02 16:23:11.193  T1c      Y       91
BROWN     VERSIE  07-0455  2011-09-22  2007-10-17 15:19:10.330  0(is)    Y       123
BROWN     VERSIE  07-0455  2011-09-22  2009-08-21 12:23:50.980  T2       Y       124

2 个答案:

答案 0 :(得分:0)

您可以尝试此查询:

with temp_cte([RO#], [stage_dt])
as
(
    select [RO#], max([stage_dt]) as [stage_dt]
    from temp
    group by [RO#]
)

select temp.*
from temp
join temp_cte on temp_cte.[RO#] = temp.[RO#]
    and temp_cte.[stage_dt] = temp.[stage_dt]

还有其他方法,但我认为这很简单。

答案 1 :(得分:0)

你可以试试这个:

SELECT * FROM temp_table 
  WHERE stage_dt IN (SELECT max(stage_dt) FROM temp_table)

根据数据库系统, IN 运算符可以替换为 = 或其他适合数据库系统的运算符。