|
Задачка по запросу | ☑ | ||
---|---|---|---|---|
0
Ион
04.11.12
✎
09:47
|
Есть следующая таблица:
Товар Дата КолвоЗаказанногоЗаДату ТекОстатокНаСкладе |
|||
1
Wobland
04.11.12
✎
09:49
|
решение:
выбрать Значение(Справочник.Номенклатура.ПустаяСсылка) как товар, ДатаВремя(1, 1, 1) как дата, 0 как КолвоЗаказанногоЗаДату, 0 как ТекОстатокНаСкладе |
|||
2
rphosts
04.11.12
✎
09:51
|
(0), (1) стебаетесь?
|
|||
3
Wobland
04.11.12
✎
09:53
|
(2) стебётесь? - так правильно
|
|||
4
rphosts
04.11.12
✎
09:54
|
(3) не учи меня и баста!
|
|||
5
Wobland
04.11.12
✎
09:55
|
(4) Сработал фильтр анти-мат
|
|||
6
rphosts
04.11.12
✎
09:56
|
(5) нет, это я так сразу написал
|
|||
7
Wobland
04.11.12
✎
09:59
|
(0) за 10 минут уже можно было договорить.. протухла ветка
|
|||
8
Повелитель
04.11.12
✎
10:03
|
(0) Не спи на клаве, а то будут потом долго кубики на морде ))
|
|||
9
Ион
04.11.12
✎
10:05
|
Не на то нажал - отправилось. И так :
Есть следующая таблица: Товар Дата КолвоЗаказанногоНаДату ТекОстаток ======================================================== Торты 04.11.2012 3 8 Торты 05.11.2012 4 8 Торты 06.11.2012 5 8 Конфеты 04.11.2012 2 6 Конфеты 05.11.2012 4 6 Пряники 04.11.2012 5 9 Пряники 05.11.2012 2 9 Пряники 06.11.2012 1 9 ... Вопрос. Как одним запросом получить по каждому товару кол-во дней , на которое хватит текущего остатка склада, чтобы удовлетворить заказы на эти дни ? (можно понятно просто перебрать выборку - но хочется запросом). т.е. по этим приведенным данным мы должны получить след. табличку: ==================== Торты 2 Конфеты 2 Пряники 3 === |
|||
10
Wobland
04.11.12
✎
10:12
|
(9) откуда исходную таблицу взял?
|
|||
11
Ион
04.11.12
✎
10:17
|
Исходная таблица , которую привел - это некая промужуточная временная таблица. Вот из нее нужно получить вышеозвученный результат. Я уже где-то на грани решения - но окончательно еще не блеснуло...
|
|||
12
Wobland
04.11.12
✎
10:18
|
(11) ну понятно, что она у тебя в готовом виде не хранится. просто, может оттуда как-то что-то..
|
|||
13
Wobland
04.11.12
✎
10:18
|
(12) *начать оттуда
|
|||
14
Wobland
04.11.12
✎
10:23
|
сдаётся мне, запрос тут не справится, ибо нарастающий итог
|
|||
15
rphosts
04.11.12
✎
10:23
|
или начать с того, что советуют в(12)
или так: 1.группируем по товру и выбираем максимальную дату 2.отбираем из исходной талицы записи в кторых комбинаця товар+дата есть в выборке из таблицы 1. + вычислимое поле остаток/hfc[jl d ltym |
|||
16
rphosts
04.11.12
✎
10:23
|
/расход в день
|
|||
17
rphosts
04.11.12
✎
10:24
|
(14) запрос вполне справляется с нарастающим итогом, щас поищу
|
|||
18
rphosts
04.11.12
✎
10:27
|
||||
19
Ион
04.11.12
✎
10:59
|
Вот для консоли запросов текст, если кто захочет пограться:
========================================================== ВЫБРАТЬ "Торты" КАК ТОВАР, "04.11.2012" КАК ДатаЗаказов, 3 КАК КолвоЗаказовНаДату, 8 КАК ТекОстаток ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Торты", "05.11.2012", 4, 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Торты", "06.11.2012", 5, 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Конфеты", "04.11.2012", 2, 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Конфеты", "05.11.2012", 4, 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пряники", "04.11.2012", 5, 9 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пряники", "05.11.2012", 2, 9 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пряники", "06.11.2012", 1, 9 ========================================================= (14,18)Спасибо , сейчас посмотрю |
|||
20
Ион
04.11.12
✎
12:58
|
Вот , если кому интересно - запрос (полностью рабочий в консоли) , решающий данную задачу. Казалось бы все просто - но когда делаешь , то тонкости есть.
(18) Это , безусловно, помогло. Там необязательно делать левое соединение , ВНУТРЕННЕЕ нормально отрабатывает. ======================================================= ВЫБРАТЬ "Торты" КАК ТОВАР, "04.11.2012" КАК ДатаЗаказов, 3 КАК КолвоЗаказовНаДату, 8 КАК ТекОстаток ПОМЕСТИТЬ ИсхТабл ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Торты", "05.11.2012", 4, 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Торты", "06.11.2012", 5, 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Конфеты", "04.11.2012", 2, 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Конфеты", "05.11.2012", 4, 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пряники", "04.11.2012", 5, 9 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пряники", "05.11.2012", 2, 9 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пряники", "06.11.2012", 1, 9 ; /////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПЕРВЫЕ 1000 Т1.Товар, Т1.ДатаЗаказов, Т1.КолвоЗаказовНаДату, Т1.ТекОстаток, СУММА(Т2.КолвоЗаказовНаДату) КАК НарастИтог ПОМЕСТИТЬ ТаблНарастИтог ИЗ ИсхТабл КАК Т1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИсхТабл КАК Т2 ПО (Т1.Товар=Т2.Товар) И (Т1.ДатаЗаказов>=Т2.ДатаЗаказов) СГРУППИРОВАТЬ ПО Т1.Товар, Т1.ДатаЗаказов, Т1.КолвоЗаказовНаДату, Т1.ТекОстаток УПОРЯДОЧИТЬ ПО Т1.Товар, Т1.ДатаЗаказов ; /////////////////////////////////////////////////////////////////// ВЫБРАТЬ Товар, КОЛИЧЕСТВО(ДатаЗаказов) КАК Текущего_Остатка_Хватит_На_Столько_Дней ИЗ ТаблНарастИтог ГДЕ ТекОстаток>=НарастИтог СГРУППИРОВАТЬ ПО Товар УПОРЯДОЧИТЬ ПО Товар |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |