Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите с запросом, пожалуйста. [D7, MSSQL]


chtr ©   (2004-03-15 07:10:00) 

Надо выбрать из повторяющихся номенклатур цену по максимальной дате. Т.е.

из

id | code | date | price
------------------------
1 | 12   | 1/01 | 250
2 | 13   | 1/01 | 800
3 | 12   | 1/02 | 253
4 | 13   | 1/02 | 795

надо получить

id | code | date | price
------------------------
3 | 12   | 1/02 | 253
4 | 13   | 1/02 | 795

Мне кажется кто-то уже такое должен был делать. Просто катастрофически нехватает времени, помогите пожалуйста.
Спасибо.


Johnmen   (2004-03-15 11:49:00) [1]

Думается, что так будет быстрее:

SELECT *
FROM Table T1
WHERE T1.date=(SELECT MAX(T2.date)
               FROM Table T2
               WHERE T1.code=T2.code)


CHTR   (2004-03-15 09:04:00) [2]

2 ЮЮ , спасибо огромное, сэкономил кучу времени. У меня так сходу пока не получается. Первый вариант подойдет.


ЮЮ   (2004-03-15 08:39:00) [3]

SELECT tbl.*
FROM
 (SELECT Code, MAX(date) MaxDate FROM Table GROUP By Code) gr
 LEFT JOIN Table tbl ON (gr.Code = tbl.CODE) AND (gr.MaxDate = tbl.Date)

если же предположить, что большему ID большая дата (т.е. данные вводятся последовательно), то можно

SELECT tbl.*
FROM
 (SELECT Code, MAX(ID) MaxId FROM Table GROUP By Code) gr
 LEFT JOIN Table tbl ON (gr.MaxId = tbl.Id)


YurikGl   (2004-03-15 08:06:00) [4]

where id>2 ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо