#sql-server-2008
#sql-server-2008
Вопрос:
У меня есть таблица, которая говорит :
id| AccID | Subject | Date
1 | 103 | Open HOuse 1 | 11/24/2011 9:00:00 AM
2 | 103 | Open HOuse 2 | 11/25/2011 10:00:00 AM
3 | 72 | Open House 3 | 11/26/2011 1:10:28 AM
4 | 82 | OPen House 4 | 11/27/2011 5:00:29 PM
5 | 82 | OPen House 5 | 11/22/2011 5:00:29 PM
Из приведенной выше таблицы мне нужны все уникальные значения для идентификатора. Но, скажем, если есть два или более столбца с одинаковым идентификатором, то мне нужен тот, у которого дата меньше (среди столбцов с одинаковым идентификатором)
Итак, из приведенной выше таблицы вывод / вывод должен быть: 1 3 5
Может кто-нибудь 1, пожалуйста, помочь мне в этом? Спасибо
Ответ №1:
SELECT t1.*
FROM [MyTable] t1
INNER JOIN
(
SELECT AccID, MIN(Date) Date
FROM [MyTable]
GROUP BY AccID
) t2 ON t1.AccID = t2.AccID AND t1.Date = t2.Date
Ответ №2:
Больше, чем просто случайное «но»…
WITH SEL
AS
(
SELECT AccID, MIN(DATE)
FROM table
GROUP BY AccID
)
SELECT table.*
FROM table
JOIN SEL ON SEL.AccID = table.AccID
Комментарии:
1. Разве это не должно присоединять SEL к дате и AccID? Похоже, что CTE не будет иметь никакого эффекта.