Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 14
1

Как вывести отчет за два периода сразу?

02.12.2015, 08:39. Показов 1309. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчане!
Помогите пожалуйста решить такое:
Есть одна таблица с кучей числовых полей. Есть запрос, который, запрашивая начальную и конечную дату, выдает суммы и средние значения этих полей. Мне нужно создать отчет, который бы выдавал эти результаты не только за указанный период, но одновременно и за тот же период прошлого года.
Т.е. если на примере, то период (зеленый) задает пользователь, как мне создать в отчете столбец "2014"?

P.S. Предполагаю, что здесь нужны In, DateAdd (с отрицательным значением), но вот как их применить?

Заранее спасибо за ответы!
Миниатюры
Как вывести отчет за два периода сразу?  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2015, 08:39
Ответы с готовыми решениями:

Отчёт СКД. Как сделать так, чтобы в него попадали только данные за оба периода
Приветствую. Не подскажите, как сделать в отчёте так, чтобы в него попадали только данные за оба...

Отчет с указанием периода дат
Создал базу, настроил запрос все выдает как надо. Но в отчете надо что бы выдавало период запроса....

Люди как создать в базе данных отчёт определённого человека из таблицы, а не всех сразу!
Нужна помощь, есть задание, начал делать базу и столкнулся с проблемой как сделать ее именно под...

Как вернуть сразу два параметра?
Функция генерирует два параметра. Как вернуть оба параметра сразу?

5
Эксперт MS Access
7397 / 4534 / 295
Регистрация: 12.08.2011
Сообщений: 14,020
02.12.2015, 08:54 2
Цитата Сообщение от revgenyv Посмотреть сообщение
Есть одна таблица с кучей числовых полей.
а поле с датой среди них есть?

Получить даты прошлого периода легко:
Пусть начальная дата будет "А", а конечная "Б" тогда
Visual Basic
1
2
Dateserial(Year(A) - 1, Month(A), Day(A)) 
Dateserial(Year(Б) - 1, Month(Б), Day(Б))
1
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 14
02.12.2015, 09:00  [ТС] 3
alvk, да, поле даты есть

Добавлено через 4 минуты
alvk, спасибо, сейчас попробую применить
0
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 14
02.12.2015, 10:04  [ТС] 4
alvk, простите мне пожалуйста мою тупость, но я никак не разберусь куда это вставить...
помогите пожалуйста!
Вложения
Тип файла: rar Выезды — копия.rar (63.6 Кб, 3 просмотров)
0
Эксперт MS Access
7397 / 4534 / 295
Регистрация: 12.08.2011
Сообщений: 14,020
02.12.2015, 10:24 5
Лучший ответ Сообщение было отмечено revgenyv как решение

Решение

Вот таким запросом можно вывести оба периода:
T-SQL
1
2
3
4
5
6
7
8
9
SELECT "Текущий" AS Период, Sum(Выезды.Выезд) AS [Sum-Выезд], Sum(Выезды.ВЫезд_по_тревоге) AS [Sum-ВЫезд_по_тревоге], Sum(Выезды.Выезд_ложный) AS [Sum-Выезд_ложный]
FROM Выезды
WHERE (((Выезды.Дата)>=[Начало] And (Выезды.Дата)<=[Конец]))
GROUP BY "Текущий"
UNION ALL 
SELECT "За предыдущий год" AS Период, Sum(Выезды.Выезд) AS [Sum-Выезд], Sum(Выезды.ВЫезд_по_тревоге) AS [Sum-ВЫезд_по_тревоге], Sum(Выезды.Выезд_ложный) AS [Sum-Выезд_ложный]
FROM Выезды
WHERE Выезды.Дата between dateserial(Year([Начало]) - 1, Month([Начало]), Day([Начало])) And  Dateserial(Year([Конец]) - 1, Month([Конец]), Day([Конец]))
GROUP BY "Текущий";
1
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 14
02.12.2015, 14:07  [ТС] 6
alvk, огромное спасибо!

Добавлено через 3 часа 10 минут
на другом форуме допилили еще такой вариант (мне он оказался более удобным для дальнейшей реализации, может кому пригодится):
SQL
1
2
3
4
5
6
7
8
SELECT
-SUM(Выезд * (Дата BETWEEN [Начало] AND [Конец])) AS [Sum-Выезд_Curr],
-SUM(Выезд_по_тревоге * (Дата BETWEEN [Начало] AND [Конец])) AS [Sum-Выезд_по_тревоге_Curr],
-SUM(Выезд_ложный * (Дата BETWEEN [Начало] AND [Конец])) AS [Sum-Выезд_ложный_Curr],
-SUM(Выезд * (Дата BETWEEN DateSerial(YEAR([Начало]) - 1, MONTH([Начало]), DAY([Начало])) AND DateSerial(YEAR([Конец]) - 1, MONTH([Конец]), DAY([Конец])))) AS [Sum-Выезд_Prev],
-SUM(Выезд_по_тревоге * (Дата BETWEEN DateSerial(YEAR([Начало]) - 1, MONTH([Начало]), DAY([Начало])) AND DateSerial(YEAR([Конец]) - 1, MONTH([Конец]), DAY([Конец])))) AS [Sum-Выезд_по_тревоге_Prev],
-SUM(Выезд_ложный * (Дата BETWEEN DateSerial(YEAR([Начало]) - 1, MONTH([Начало]), DAY([Начало])) AND DateSerial(YEAR([Конец]) - 1, MONTH([Конец]), DAY([Конец])))) AS [Sum-Выезд_ложный_Prev]
FROM Выезды;
0
02.12.2015, 14:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2015, 14:07
Помогаю со студенческими работами здесь

Как открыть сразу два проекта?
Никак не могу открыть два проекта, один мне нужен в качестве примера,а второй для писания кода. Но...

Как переместить сразу два и более объекта?
по отдельности label1 и label2 у меня перемещаються, через mouze(down/move/up), а как осуществить...

Как вопроизводить аудио сразу на два аудиоустройства
Подскажите, как? Винда дает выбрать только одно устройство. Например, выбираю я устройство &quot;Realtek...

Как из stack удалить сразу два элемента?
#include &lt;iostream&gt; #include &lt;stack&gt; using namespace std; int main() { stack &lt;int&gt; q;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru