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

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

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

Заранее спасибо за ответы!
\\\\
Дата: 02.12.2015 09:53:51
revgenyv, 18410368
revgenyv
Дата: 02.12.2015 10:12:11
\\\\
revgenyv, 18410368

простите пожалуйста мне мою тупость, но я что-то никак не пойму как это применить в моем случае...
Вот мой запрос:
SELECT Sum(Выезды.Выезд) AS [Sum-Выезд], Sum(Выезды.Выезд_по_тревоге) AS [Sum-Выезд_по_тревоге], Sum(Выезды.Выезд_ложный) AS [Sum-Выезд_ложный]
FROM Выезды
WHERE (((Выезды.Дата)>=[Начало] And (Выезды.Дата)<=[Конец]));

Исправьте пожалуйста, как должно быть, чтобы получить не три значения, а шесть (+прошлогодний период). Спасибо!
revgenyv
Дата: 02.12.2015 10:58:54
нашел ответ на другом форуме (может кому пригодится):
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 "Текущий";
__Michelle
Дата: 02.12.2015 12:13:03
Вариант?
SELECT 
(Дата BETWEEN [Начало] And [Конец]) AS DCurr, 
(Дата BETWEEN DateSerial(Year([Начало]) - 1, Month([Начало]), Day([Начало])) And DateSerial(Year([Конец]) - 1, Month([Конец]), Day([Конец])) AS DPrev,
Sum(Выезд * DCurr) AS [Sum-Выезд_Curr], 
Sum(Выезд_по_тревоге * DCurr) AS [Sum-Выезд_по_тревоге_Curr], 
Sum(Выезд_ложный * DCurr ) AS [Sum-Выезд_ложный_Curr],
Sum(Выезд * DPrev) AS [Sum-Выезд_Prev], 
Sum(Выезд_по_тревоге * DPrev) AS [Sum-Выезд_по_тревоге_Prev], 
Sum(Выезд_ложный * DPrev ) AS [Sum-Выезд_ложный_Prev],
FROM Выезды;
revgenyv
Дата: 02.12.2015 12:16:36
__Michelle, что-то на синтаксис ругается...
вот пример базы
__Michelle
Дата: 02.12.2015 12:22:53
revgenyv,

Сейчас базу посмотреть не могу, пишу с планшета.
Может, где чего упустила, попробую найти.
revgenyv
Дата: 02.12.2015 12:24:35
__Michelle, спасибо огромное! буду ждать.

Вот что пишет:
revgenyv
Дата: 02.12.2015 12:29:54
__Michelle, Ваш вариант мне был бы удобнее! но я, к сожалению, только начинающий, не могу понять где ошибка... жду и надеюсь на Вас!
__Michelle
Дата: 02.12.2015 12:52:34
revgenyv,
Кажется, двух скобок не хватало
 (Дата BETWEEN DateSerial(Year([Начало]) - 1, Month([Начало]), Day([Начало])) And DateSerial(Year([Конец]) - 1, Month([Конец]), Day([Конец]))) AS DPrev

З