![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL [D5, MSSQL]
MakNik © (2003-12-19 10:29:00)
Подскажите, плз., как заставить такой запрос работать?
Select ID, MAX(Cr.DateCreateCard) from Cards Cr
Group by CR.INN
Sandman25 (2003-12-19 11:24:00) [1]
[17] Shirson © (19.12.03 11:21)
Тоже верно :)
Shirson (2003-12-19 11:21:00) [2]
IMHO, это нам есть куда расти. :)
Sandman25 (2003-12-19 11:13:00) [3]
[15] Johnmen © (19.12.03 11:10)
На примере таких задач начинаю понимать, что языку SQL есть куда расти. Вроде бы примитивнейшая операция, а нормально не указать :(
Johnmen (2003-12-19 11:10:00) [4]
>Sandman25 ©
Да. Мой набросок некорректен...:)
Отчасти потому, что может быть более одного id за одну дату с одним inn...
Sandman25 (2003-12-19 11:07:00) [5]
[12] Sandman25 © (19.12.03 10:58)
Лучше игнорировать. Слишком медленно работает :(
Sandman25 (2003-12-19 11:00:00) [6]
[11] Плохиш_ (19.12.03 10:58)
where c2.ID=c1.ID
?
Я уже написал правильную версию в [8]. Сделал на основе Вашей идеи.
Sandman25 (2003-12-19 10:58:00) [7]
[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)
Плохиш_ (2003-12-19 10:58:00) [8]
>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:56:00) [9]
[7] Johnmen © (19.12.03 10:52)
У меня на это ругается The column idd must be in the group by list
MakNik (2003-12-19 10:55:00) [10]
> Sandman25 © (19.12.03 10:49) [6]
Спасибо, работает!!!
Sandman25 (2003-12-19 10:53:00) [11]
select id from cards c1 where DateCreateCard =
(select max(DateCreateCard) from cards c2 where c1.inn=c2.inn)
Johnmen (2003-12-19 10:52:00) [12]
Примерно так
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:49:00) [13]
[5] Плохиш_ (19.12.03 10:46)
DateCreateCard не уникальное поле.
Плохиш_ (2003-12-19 10:46:00) [14]
>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:45:00) [15]
select id from cards c1 where not exists
(select 1 from cards c2 where c1.inn=c2.inn
and c1.DateCreateCard < c2.DateCreateCard)
MakNik (2003-12-19 10:40:00) [16]
> 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
------------------------
312.12.2003 222
515.12.2003 123
Silver Alex (2003-12-19 10:35:00) [17]
на выбор :)
Select CR.INN , MAX(Cr.DateCreateCard) from Cards Cr
Group by CR.INN
Johnmen (2003-12-19 10:29:00) [18]
Select ID, MAX(Cr.DateCreateCard) from Cards Cr
Group by ID