SQL查询以避免重复和按行排序

时间:2010-07-01 14:34:21

标签: sql-server sql-server-2005

需要使用连接的SQL查询 我需要帮助

表名:RVW_TSK

RVW_ID UPC_CD CMPL_DATE
00001 10101010 10-10-2009
00002 10101010 13-10-2009
00003 20202020 5-11-2008
00004 20202020 8-11-2008

预期结果如下:

RVW_ID  UPC_CD    CMPL_DATE
00002   10101010  13-10-2009
00004   20202020  8-11-2008

我想要最新的(来自CMPL_DATE)并且没有重复的UPC_CD。 任何帮助将不胜感激?

6 个答案:

答案 0 :(得分:6)

除非我在这里读错了,否则这似乎是一个直截了当的小组。 由于我现在没有任何数据库来测试它...无法保证确切的语法,但这里...假设CMPL_DATE是一个日期时间字段。如果它是一个字符串

,它可能需要一些转换等
Select MAX(RVW_ID), UPC_CD, MAX(CMPL_DATE)
FROM RVW_TSK
GROUP BY UPC_CD

答案 1 :(得分:3)

如果rvw_id和cmpl_date具有相同的顺序,您可以逃脱:

select max(rvw_id), upc_cd, max(cmpl_date)
from rvw_tsk
group by upc_cd

如果没有,你必须做一些稍微有点发展的事情,比如Bharat或Baaju的回答。

答案 2 :(得分:2)

SELECT   B.RVW_ID, B.UPC_CD, B.CMPL_DATE 
FROM     (SELECT UPC_CD, MAX(CMPL_DATE) CMPL_DATE
          FROM RVW_TSK
          GROUP BY UPC_CD)TBL JOIN RVW_TSK B
ON        TBL.UPC_CD = B.UPC_CD AND TBL.CMPL_DATE = B.CMPL_DATE

答案 3 :(得分:1)

select  MAX(RVW_ID), distinct UPC_CD, max(CMPL_DATE) from RVW_TSK group by UPC_CD

答案 4 :(得分:1)

SELECT *
  FROM (SELECT rvw_id,
               upc_cd,
               cmpl_date,
               RANK () OVER (PARTITION BY upc_cd ORDER BY cmpl_date DESC)
                  my_rank
          FROM rvw_tsk)
 WHERE my_rank = 1;

答案 5 :(得分:1)

Select RVW_ID, UPC_CD, CMPL_DATE
From RVW_TSK As T
Where T.CMPL_DATE = (
                        Select Max(CMPL_DATE)
                        From RVW_TSK As T1
                        Where T1.UPC_CD= T.UPC_CD
                        )

这假定对于给定的UPC_CD,日期是唯一的。从你的帖子中不清楚这是否属实,如果不是,应该如何处理重复。