SQL-запрос, чтобы избежать дублирования и упорядочить строку - PullRequest
1 голос
/ 01 июля 2010

Нужен 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 ]

6 голосов
/ 01 июля 2010

Это похоже на прямую группу, если я не читаю здесь что-то не так.Поскольку у меня нет какой-либо базы данных, чтобы проверить это сейчас .. не могу ручаться за точный синтаксис, но здесь идет ... при условии, что CMPL_DATE является полем datetime.Может потребоваться некоторое преобразование и т. Д., Если это строка

Select MAX(RVW_ID), UPC_CD, MAX(CMPL_DATE)
FROM RVW_TSK
GROUP BY UPC_CD
3 голосов
/ 01 июля 2010

Если rvw_id и cmpl_date имеют одинаковый порядок, вы можете уйти с:

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

Если нет, вы должны сделать что-то более изощренное, как в ответах Бхарата или Бааджу.

2 голосов
/ 01 июля 2010
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
1 голос
/ 01 июля 2010
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 даты являются уникальными.Из вашего поста неясно, правда ли это, и если нет, то как обрабатывать дубликаты.

1 голос
/ 01 июля 2010
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;
1 голос
/ 01 июля 2010
select  MAX(RVW_ID), distinct UPC_CD, max(CMPL_DATE) from RVW_TSK group by UPC_CD
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...