простите мою тупость, разучился запросы писать, помогите пожалуйста
igel1969
Дата: 15.12.2011 10:21:57
Есть таблица [Партии товара]
в ней нас интересует только три поля: GUID, [Коммерческая себестоимость] и [Дата прихода].
Могут быть несколько записей с одним GUID, но при этом у них будет разная коммерческая себестоимость и разная дата прихода.
Мне на выходе надо:
Чтобы было выбрано только по одному GUID, без повторений. Но при этом чтобы [Дата прихода] была самой ранней. И при этом чтобы было поле [Коммерческая себестоимость] соответствующее этой дате прихода.
для примера:
GUID Коммерческая себестоимость Дата прихода
111111111 10 09.11.11
111111111 12 12.11.11
111111111 9 01.06.11
222222222 34 27.11.11
222222222 32 29.11.11
А на выходе должно быть:
111111111 9 01.06.11
222222222 34 27.11.11
Можно такой запрос сделать?
Akina
Дата: 15.12.2011 10:26:13
select t1.*
from table as t1
inner join
(
select t2.guid, min(t2.[Дата прихода]) as [Дата прихода]
from table as t2
group by t2.guid
) as q1
on t1.guid = q1.guid and t1.[Дата прихода] = q1.[Дата прихода]
igel1969
Дата: 15.12.2011 10:45:59
Akina,
спасибо (((
пока не жрет этот запрос, думаю дальше (((
sdku
Дата: 15.12.2011 11:39:55
igel1969,
как вариант
Akina
Дата: 15.12.2011 12:00:11
igel1969 |
---|
пока не жрет этот запрос |
Обязан. Но вот если ты его раз переключишь в режим просмотра в конструкторе - его перекосит.
В крайнем случае оформи подзапрос как статический запрос - - тогда и в констроукторе можно всё строить/править.
igel1969
Дата: 15.12.2011 13:05:41
Akina,
может я был не прав, отправляя свой вопрос в эту ветку форума.
дело в том, что я сам запрос в ADO-компоненте Delphi применяю, а Access у меня только БД, откуда берутся данные.
Когда в Дельфях пишешь запрос, то они применяют разные языки SQL, в зависимости от провайдера. Например, запрос, написанный на TrnasctSQL для MS SQL может не прокатить в такой же структуре БД, но хранящейся в Access-овском файле. Вот поэтому я послал свой вопрос именно сюда, может это было неправильно. Видимо еще имеет значение и среда выполнения, а не только провайдер...
igel1969
Дата: 15.12.2011 13:28:31
Akina, хотя нет, попробовал в Access этот запрос - все-равно такую же ошибку выдает:
невозможно объединение с полем Memo, объекта OLE или объекта гиперссылки (t1.guid = q1.guid and t1.[Дата прихода] = q1.[Дата прихода])
igel1969
Дата: 15.12.2011 13:29:52
Akina, блин, все-таки я тупой - у меня же поле GUID является Memo, извините
Akina
Дата: 15.12.2011 13:38:53
Предупреждать надо... в таком случае замените связывание на отбор и, если потребуется, преобразуйте поле в условии отбора к строковому типу.
alvk
Дата: 15.12.2011 13:39:07
igel1969,
оно даже не группируется, жестоко вы с нами. а преобразовать?