Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.03 c
4-1139742902
Sulimxar
2006-02-12 14:15
2006.06.11
Слежение за разрешением монитора


2-1148318655
Mozaika_81
2006-05-22 21:24
2006.06.11
Где взять компонент TrayIcon для Delphi7


3-1145429137
RomanH
2006-04-19 10:45
2006.06.11
Помогите с запросом


3-1145365336
ttt_111
2006-04-18 17:02
2006.06.11
Поиск как в 1С.


15-1148138367
ArtemESC
2006-05-20 19:19
2006.06.11
Извините за глупый вопрос по ASM





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский