Вниз
Скачать: CL | DM;

Ув. мастера. Помогите разобраться с группировкой   Найти похожие ветки 

← →
AversFm   (2006-05-25 17:34) [0]

Ув. мастера. Помогите разобраться с группировкой

Имеется условная таблица из четырех полей:

ID   HOLD      INDATE    NAME
 
 1  Склад1   01.01.2006 Товар1
 2  Склад2   04.01.2006 Товар1
 3  Склад3   05.01.2006 Товар1
 4  Склад1   01.01.2006 Товар2
 5  Склад2   08.01.2006 Товар2
 6  Склад3   02.01.2006 Товар2

Пытаюсь написать красивый запрос который возвращал бы те записи,  которых дата максимальна для комбинации (HOLD, NAME). Для вышеуказанного списка это будет две записи:

 3  Склад3   05.01.2006 Товар1
 5  Склад2   08.01.2006 Товар2


← →
Desdechado ©   (2006-05-25 17:36) [1]

> Пытаюсь написать
и?
что уже напытался?


← →
Johnmen ©   (2006-05-25 17:49) [2]

Да-да, текст попыток в студию! :)


← →
AversFm   (2006-05-25 17:53) [3]

Опс... Не все сообщение в буфер кинул.

Ту так вот. Имеется ли способ, чтобы такого типа запросы делались
одним общим запросом? Получить максимальную дату не проблема, но как идентифицировать эту запись?


← →
Johnmen ©   (2006-05-25 17:56) [4]

По максимальной дате в группе.
Если ты имеешь в виду, что неплохо бы узнать её ID, то надо ещё вложенный запрос в WHERE.


← →
AversFm   (2006-05-25 18:01) [5]

select ID,  HOLD, min( INDATE),  NAME
from TABLE
group by ID,  HOLD,  NAME

не  подходит, т.к. мы получаем все записи.

select HOLD, min( INDATE),  NAME
from TABLE
group by HOLD,  NAME

тоже не подходит, так как мы не сможем идентифицировать записи.


← →
AversFm   (2006-05-25 18:06) [6]


> По максимальной дате в группе.
> Если ты имеешь в виду, что неплохо бы узнать её ID, то надо
> ещё вложенный запрос в WHERE.


select ID,  HOLD, INDATE,  NAME
from TABLE
where INDATE IN ( select max(INDATE) from TABLE group by HOLD, NAME )

Например так?
Не пройдет, так как для разных камбинаций HOLD, NAME даты могут совпадать.


← →
Desdechado ©   (2006-05-25 18:08) [7]

WHERE t.INDATE=(SELECT Max(t1.INDATE) FROM t1 WHERE t1.name=t.name)


← →
AversFm   (2006-05-25 18:43) [8]


> Desdechado ©   (25.05.06 18:08) [7]
> WHERE t.INDATE=(SELECT Max(t1.INDATE) FROM t1 WHERE t1.name=t.
> name)


Спасибо, помогло. Теперь заработало.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.028 c
6-1139150890
ZeFiR
2006-02-05 17:48
2006.06.11
Отображение WML документов?


15-1147855328
boriskb
2006-05-17 12:42
2006.06.11
С праздником :)


9-1131209159
bigf00T
2005-11-05 19:45
2006.06.11
Движок GDelphi


2-1148669632
NE$MO
2006-05-26 22:53
2006.06.11
Скины на дельфя


15-1148132956
Александер
2006-05-20 17:49
2006.06.11
Прога для верстки WEB-страничек.




   Наверх