Форум: "Базы";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];
ВнизSQL Найти похожие ветки
← →
MakNik (2003-12-19 10:29) [0]Подскажите, плз., как заставить такой запрос работать?
Select ID, MAX(Cr.DateCreateCard) from Cards Cr
Group by CR.INN
← →
Johnmen (2003-12-19 10:29) [1]
Select ID, MAX(Cr.DateCreateCard) from Cards Cr
Group by ID
← →
Silver Alex (2003-12-19 10:35) [2]на выбор :)
Select CR.INN , MAX(Cr.DateCreateCard) from Cards Cr
Group by CR.INN
← →
MakNik (2003-12-19 10:40) [3]
> Johnmen © (19.12.03 10:29) [1]
Есть таблица:
ID DateCreateCard INN
------------------------
1 12.12.2003 123
2 13.12.2003 123
3 12.12.2003 222
4 11.12.2003 222
5 15.12.2003 123
...
Нужно получить: ID-ку записи с максимальной датой для каждого набора с одинаковым INN. т.е получить след.:
ID DateCreateCard INN
------------------------
3 12.12.2003 222
5 15.12.2003 123
← →
Sandman25 (2003-12-19 10:45) [4]select id from cards c1 where not exists
(select 1 from cards c2 where c1.inn=c2.inn
and c1.DateCreateCard < c2.DateCreateCard)
← →
Плохиш_ (2003-12-19 10:46) [5]>MakNik © (19.12.03 10:40) [3]
Так ты над своим селектом логически по-мысли ;-)
Select ID from Cards where
DateCreateCard = (select MAX(DateCreateCard) from Cards
Group by INN)
← →
Sandman25 (2003-12-19 10:49) [6][5] Плохиш_ (19.12.03 10:46)
DateCreateCard не уникальное поле.
← →
Johnmen (2003-12-19 10:52) [7]Примерно так
SELECT
(SELECT T1.ID FROM Table T1 WHERE T2.ID=T1.ID) IDD,
MAX(T2.DateCreateCard),
T2.INN
FROM Table T2
GROUP BY T2.INN
← →
Sandman25 (2003-12-19 10:53) [8]select id from cards c1 where DateCreateCard =
(select max(DateCreateCard) from cards c2 where c1.inn=c2.inn)
← →
MakNik (2003-12-19 10:55) [9]
> Sandman25 © (19.12.03 10:49) [6]
Спасибо, работает!!!
← →
Sandman25 (2003-12-19 10:56) [10][7] Johnmen © (19.12.03 10:52)
У меня на это ругается The column idd must be in the group by list
← →
Плохиш_ (2003-12-19 10:58) [11]>Sandman25 © (19.12.03 10:49) [6]
:-( Поторопился и забыл
Select c1.ID from Cards c1 where
c1.DateCreateCard =
(select MAX(DateCreateCard) from Cards c2
where c2.ID=c1.ID
Group by INN)
← →
Sandman25 (2003-12-19 10:58) [12][9] MakNik © (19.12.03 10:55)
Кстати, если таких строк (с максимальной датой)для одного inn несколько, то можно поставить извлечение только одной из них.
select id from cards c1 where not exists
(select 1 from cards c2 where c1.inn=c2.inn
and c1.DateCreateCard <= c2.DateCreateCard and c1.id < c2.id)
← →
Sandman25 (2003-12-19 11:00) [13][11] Плохиш_ (19.12.03 10:58)
where c2.ID=c1.ID
?
Я уже написал правильную версию в [8]. Сделал на основе Вашей идеи.
← →
Sandman25 (2003-12-19 11:07) [14][12] Sandman25 © (19.12.03 10:58)
Лучше игнорировать. Слишком медленно работает :(
← →
Johnmen (2003-12-19 11:10) [15]>Sandman25 ©
Да. Мой набросок некорректен...:)
Отчасти потому, что может быть более одного id за одну дату с одним inn...
← →
Sandman25 (2003-12-19 11:13) [16][15] Johnmen © (19.12.03 11:10)
На примере таких задач начинаю понимать, что языку SQL есть куда расти. Вроде бы примитивнейшая операция, а нормально не указать :(
← →
Shirson (2003-12-19 11:21) [17]IMHO, это нам есть куда расти. :)
← →
Sandman25 (2003-12-19 11:24) [18][17] Shirson © (19.12.03 11:21)
Тоже верно :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c