|
Из списка доков выбрать запросом максимальный по дате | ☑ | ||
---|---|---|---|---|
0
evorle145
26.11.14
✎
10:52
|
Есть таблица доков:
НомерДока ДатаДока РеквизитНоменклатура (1) 000001 01.01.2013 яблоко (2) 000002 01.01.2014 яблоко (3) 000003 01.01.2014 яблоко Вопрос как запросом из этого списка доков получить (2) или (3) строку?(то есть максимальный по дате документ и его номер) Делаю так: ВЫБРАТЬ Рецептура.Номенклатура, Рецептура.Дата КАК Дата, Рецептура.Номер ПОМЕСТИТЬ Рецептуры ИЗ Документ.Рецептура КАК Рецептура ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МАКСИМУМ(Рецептура.Дата) КАК Дата, Рецептура.Номенклатура КАК Номенклатура ИЗ Документ.Рецептура КАК Рецептура СГРУППИРОВАТЬ ПО Рецептура.Номенклатура) КАК ВложенныйЗапрос ПО Рецептура.Дата = ВложенныйЗапрос.Дата Но такой запрос мне вернет и (2) и (3) строку, а мне надо получить либо (2) либо (3), чтобы дальше полученный результат использовать в соединении с другими таблицами.. |
|||
1
DCKiller
26.11.14
✎
10:57
|
ВЫБРАТЬ
Рецептура.Номенклатура, ВложЗапрос.Дата ИЗ Документ.Рецептура КАК Рецептура ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МАКСИМУМ(Рецептура.Дата) КАК Дата ИЗ Документ.Рецептура КАК Рецептура) ПО ИСТИНА |
|||
2
Ёпрст
26.11.14
✎
10:57
|
(0) ну выбери Максимум(НомерДок) ... будет у тебя 1 строка.
|
|||
3
evorle145
26.11.14
✎
11:03
|
(1) , спасибо, но боюсь, что левым соединением я получу все строки, а не те, у которых макс дата.
походу (2) дал мне правильный совет... Сам не понимаю, почему мне это в голову не пришло, спасибо! |
|||
4
Cube
26.11.14
✎
11:05
|
(3) Веселуха начнется, когда ты начнешь собирать документы с декабря 2014 по январь 2015... С нового года-то нусерация с 1 начнется...
|
|||
5
Cube
26.11.14
✎
11:05
|
(4) "нусерация" = "нумерация" :)
|
|||
6
zulu_mix
26.11.14
✎
11:06
|
лучше +максимум(ссылка)
тогда гарантировано выберешь самый последний документ |
|||
7
Cube
26.11.14
✎
11:10
|
(6) Не факт:
Если я создам документ от 26.11.2014 и запишу, а потом создам документ от 01.11.2014 и запишу, то Максимум(Ссылка) мне выдаст документ от 01.11.2014, верно? :) |
|||
8
evorle145
26.11.14
✎
11:10
|
(4) не понял... ведь при внутреннем соединении я уже получу документы с максимальной одинаковой датой, а уж потом буду брать максимум по номеру.. то есть доки 2014 и 2015 никак вроде не пересекаются...
|
|||
9
evorle145
26.11.14
✎
11:11
|
ВЫБРАТЬ
Рецептура.Номенклатура, Рецептура.Дата КАК Дата, МАКСИМУМ(Рецептура.Номер) КАК Номер ПОМЕСТИТЬ Рецептуры ИЗ Документ.Рецептура КАК Рецептура ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МАКСИМУМ(Рецептура.Дата) КАК Дата, Рецептура.Номенклатура КАК Номенклатура ИЗ Документ.Рецептура КАК Рецептура СГРУППИРОВАТЬ ПО Рецептура.Номенклатура) КАК ВложенныйЗапрос ПО Рецептура.Дата = ВложенныйЗапрос.Дата СГРУППИРОВАТЬ ПО Рецептура.Номенклатура, Рецептура.Дата, Разве так не взлетит? |
|||
10
zulu_mix
26.11.14
✎
11:12
|
(7) верно. но если у тебя за один день несколько документов с одинаковой датой, то максимум(ссылка) выдаст тебе последний физически введенный в этот день документ.
и потом. я же написал +максимум |
|||
11
zulu_mix
26.11.14
✎
11:13
|
(9) МАКСИМУМ(Рецептура.Номер) КАК Номер замени на МАКСИМУМ(Рецептура.ссылка) КАК док
|
|||
12
Kamas
26.11.14
✎
11:18
|
а чем не нравится выбрать ПЕРВЫЕ 1
УПОРЯДОЧИТЬ ПО Дата УБЫВ |
|||
13
evorle145
26.11.14
✎
11:21
|
(11) , понял, спасибо!
(12), так я так получу только 1 рецептуру с максимальной датой, а вообще рецептур то много...(в примере только яблоки , но есть еще груши) |
|||
14
Kamas
26.11.14
✎
11:24
|
(13) а ну если есть еще и груши
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |