|
Выборка по максимальной дате
| ☑ |
0
dimonram1978
20.03.15
✎
11:06
|
Добрый день.
Прошу прощения за возможно простой вопрос.
Есть несколько накладных.
Клиент1 НАкл1 Дата1
Клиент1 НАкл2 Дата2
Клиент2 Накл1 Дата1
Клиент2 Накл2 Дата2
Необходимо выбрать только последние по дате накладные (ну либо первые). Чтобы получилось.
Клиент1 НАкл2 Дата2
Клиент2 Накл2 Дата2
Не подскажете как это сделать?
С уважением.
|
|
1
salvator
20.03.15
✎
11:09
|
Получить таблицу с максимальными датами для отдельного клиента, затем соединить с исходной по дате
|
|
2
salvator
20.03.15
✎
11:09
|
+ и клиенту
|
|
3
Spyke
20.03.15
✎
11:14
|
В (1) лучший ответ, но для изврата можно
Упарядочить по Клиент + Накл + Дата -
поместить в ВТ
потом выбрать из ВТ различные
|
|
4
dimonram1978
20.03.15
✎
11:21
|
Возможно я чайник - но что значит "Получить таблицу с максимальными датами" ? Собственно ведь в этом и вопрос... Упорядочить конечно можно, но как отобрать?
|
|
5
salvator
20.03.15
✎
11:23
|
(4) Первым запросом выбери клиента и МАКСИМУМ(дата) с группировкой по клиенту. Поместить к примеру во ВТ.
Получишь таблицу вида
Клиент1 Дата2
Клиент2 Дата2
Затем эту ВТ соединить с исходной.
|
|
6
salvator
20.03.15
✎
11:31
|
ВЫБРАТЬ
ТаблицаИсходная.Клиент,
МАКСИМУМ(ТаблицаИсходная.Дата) КАК Дата
ПОМЕСТИТЬ Таб
ИЗ ТаблицаИсходная КАК ТаблицаИсходная
СГРУППИРОВАТЬ ПО
ТаблицаИсходная.Клиент
;
ВЫБРАТЬ
Таб.Клиент,
ТаблицаИсходная.Документ,
Таб.Дата
ИЗ Таб КАК Таб
ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаИсходная КАК ТаблицаИсходная
ПО Таб.Дата = ТаблицаИсходная.Дата
И Таб.Клиент = ТаблицаИсходная.Клиент
;
УНИЧТОЖИТЬ Таб
Примерно как-то так.
|
|
7
salvator
20.03.15
✎
11:34
|
А еще лучше сделать максимум по ссылке, чтобы исключить задвоений, когда максимальная дата будет встречаться более 1 раза
|
|
8
D_E_S_131
20.03.15
✎
11:43
|
(7) + соединение можно делать внутреннее и, соответственно, по полю "Документ".
|
|
9
dimonram1978
20.03.15
✎
16:47
|
Спасибо. Получилось!
|
|