Страница 1 из 2
Объединение нескольких выборок (MS Access 97)
Добавлено: 11 ноя 2004, 15:36
Спартак
Есть таблица "продажи", где есть три столбца - наименование, дата и количество продаж
Из этого я формирую три запроса - продажи за последнюю неделю, последний месяц и последний год. Как это потом свести в одну таблицу формата
наименование:продажи за последнюю неделю:последний месяц:последний год
?
Спасибо
Добавлено: 12 ноя 2004, 00:30
Naeel Maqsudov
Зачем объединять! Создайте не три, а один запрос, возвращающий результат в нужном формате.
Код: Выделить всё
select
наименоване,
(select sum([количество продаж])
from where наименование=П1.наименование and дата>Now()-7
) as за_неделю,
(select sum([количество продаж])
from where наименование=П1.наименование and дата>Now()-30
) as за_месяц,
(select sum([количество продаж])
from where наименование=П1.наименование and дата>Now()-365
) as за_год,
from продажи as П1
Добавлено: 12 ноя 2004, 10:21
Спартак
Не работает,
Ошибочное или пропущенное зарезервированное слово или аргумент в инструкции SELECT или неверная пунктуация.
В чем может быть проблема?
Естественно вторая строчка "наименованИе", но не работает
Менял все имена на латиницу - таблица PRODAGA, дата=DATA_DOC, количество продаж = KOL, наименование=NAIM2
Не получается
Добавлено: 15 ноя 2004, 10:36
Naeel Maqsudov
Прошу прощения, во всех вложенных запросах я пропустил название таблицы:
есть ...from where...
а надо ...from продажи where...
Еще попробуйте в конструкторе запросов этот запрос открывать. Там должны получиться просто вычисляемые поля.
Например: "За_неделю

select....)"
Добавлено: 15 ноя 2004, 14:36
Спартак
Увы... м.б.версия Access? или мои кривые руки.... ну не работает...
в конструкторе не открывается - пишет ту же ошибку
Можно по шагам расписать?
Я создаю запрос/конструктор, переключаюсь в SQL вид, забиваю код... после этого запускаю... Что не так?
Добавлено: 16 ноя 2004, 12:38
Спартак
ОК, я решил экспортировать все в Excel, потом объединить все через СУММЕСЛИ
В связи с этим вопрос - можно ли экспортировать в конкретный лист книги и, если он уже есть, заменять его?
Добавлено: 16 ноя 2004, 17:03
chur
С excel-ом, ИМХО, сильно горбатое решение получится. Попробуй ипользовать iif.
Код: Выделить всё
select
наименование,
sum(iif(дата>Now()-7;[количество продаж];0)) as за_неделю,
sum(iif(дата>Now()-30;[количество продаж];0)) as за_месяц,
sum(iif(дата>Now()-365;[количество продаж];0)) as за_год,
from продажи
group by наименование
Добавлено: 18 ноя 2004, 09:47
Спартак
Вот как заработало... через конструктор налепил. Причем если урезать строку группировки до одного значения - не работает.
SELECT
PRODAGA.NAIM2,
IIf([PRODAGA]![DATA_DOC]>(Date()-7),[PRODAGA]![KOL],0) AS Выражение1, IIf([PRODAGA]![DATA_DOC]>(Date()-14),[PRODAGA]![KOL],0) AS Выражение2, IIf([PRODAGA]![DATA_DOC]>(Date()-30),[PRODAGA]![KOL],0) AS Выражение3, IIf([PRODAGA]![DATA_DOC]>(Date()-60),[PRODAGA]![KOL],0) AS Выражение4, IIf([PRODAGA]![DATA_DOC]>(Date()-90),[PRODAGA]![KOL],0) AS Выражение5
FROM PRODAGA
GROUP BY PRODAGA.NAIM2, IIf([PRODAGA]![DATA_DOC]>(Date()-7),[PRODAGA]![KOL],0), IIf([PRODAGA]![DATA_DOC]>(Date()-14),[PRODAGA]![KOL],0), IIf([PRODAGA]![DATA_DOC]>(Date()-30),[PRODAGA]![KOL],0), IIf([PRODAGA]![DATA_DOC]>(Date()-60),[PRODAGA]![KOL],0), IIf([PRODAGA]![DATA_DOC]>(Date()-90),[PRODAGA]![KOL],0);
Добавлено: 18 ноя 2004, 09:49
Спартак
Спасибо всем большое за помощь!!!
Правда прогу я уже слил всем заинтересованным лицам, с гемором через Excel, но буду апгрейдить

Добавлено: 18 ноя 2004, 13:37
chur
Спартак писал(а):Причем если урезать строку группировки до одного значения - не работает.
В SQL, что ты привел, GROUP BY вообще можно убрать, я бы даже сказал нужно.