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

Запрос count в диапазоне между датами

18.04.2017, 18:46. Показов 2613. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создаю запрос с подсчетом строк по значению. Необходимо чтобы выборка значений происходила в определенном диапазоне дат. Запрос выглядит следующим образом:
SQL
1
2
3
4
SELECT BASE.Район, COUNT(IIf([STATUS].[Возрастная группа]="дети" AND [STATUS].[Метод]="ОБРАЩЕНИЕ",11)) AS [дети обращение], COUNT(IIf([STATUS].[Возрастная группа]="подростки" AND [STATUS].[Метод ]="ОБРАЩЕНИЕ",11)) AS [подростки обращение], COUNT(IIf([STATUS].[Возрастная группа]="взрослые" AND [STATUS].[Метод ]="ОБРАЩЕНИЕ",11)) AS [Взрослые обращение], STATUS.[Дата]
FROM BASE LEFT JOIN STATUS ON BASE.ID = STATUS.SID
GROUP BY BASE.Район, STATUS.[Метод выявления], STATUS.[Дата]
HAVING (((STATUS.[Метод ])="ОБРАЩЕНИЕ") AND ((STATUS.[Дата]) BETWEEN Nz([Forms]![MAIN]![BASFORM]![Поле2],#1/1/1000#) AND Nz([Forms]![MAIN]![BASFORM]![Поле4],#1/1/3000#)));
Соответственно при формировании запроса строки содержат значение count для определенной даты.
Каким образом изменить запрос чтобы подсчет для дат не выводился, а даты находящиеся за пределами диапазона в отчет просто не попадали?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2017, 18:46
Ответы с готовыми решениями:

Автофильтр ссылка на ячейку в диапазоне между датами
Доброго времени суток, прошу помощи в следующем вопросе, как вместо дат в данном случае заставить...

Запрос между датами
Добрый вечер! Кто-нибудь сможет подсказать: есть таблица в бд, в ней, например, 4 даты -...

Запрос на выборку между датами
Не работает, запрос private void button2_Click(object sender, EventArgs e) { ...

запрос между двумя датами
есть такой запрос, который должен вывести все Ид_проводки, если заданы даты почему он не работает...

6
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
18.04.2017, 19:05 2
Лучший ответ Сообщение было отмечено urman как решение

Решение

Цитата Сообщение от urman Посмотреть сообщение
чтобы подсчет для дат не выводился
Убрать поле даты из селекта и из From

Цитата Сообщение от urman Посмотреть сообщение
даты находящиеся за пределами диапазона в отчет просто не попадали?
Диапазон в запросе написать в предложении Where (вместо Having)
1
7 / 7 / 0
Регистрация: 10.04.2015
Сообщений: 282
18.04.2017, 19:30  [ТС] 3
Цитата Сообщение от mobile Посмотреть сообщение
Сообщение от urman
чтобы подсчет для дат не выводился
Убрать поле даты из селекта и из From
Сообщение от urman
даты находящиеся за пределами диапазона в отчет просто не попадали?
Диапазон в запросе написать в предложении Where (вместо Having)
SQL
1
2
3
4
SELECT BASE.Район, COUNT(IIf([STATUS].[Возрастная группа]="дети" AND [STATUS].[Метод ]="ОБРАЩЕНИЕ",11)) AS [дети обращение], COUNT(IIf([STATUS].[Возрастная группа]="подростки" AND [STATUS].[Метод ]="ОБРАЩЕНИЕ",11)) AS [подростки обращение], COUNT(IIf([STATUS].[Возрастная группа]="взрослые" AND [STATUS].[Метод ]="ОБРАЩЕНИЕ",11)) AS [Взрослые обращение], STATUS.[Метод ]
FROM BASE LEFT JOIN STATUS ON BASE.ID = STATUS.SID
WHERE (((STATUS.[Метод ])="ОБРАЩЕНИЕ") AND ((STATUS.[Дата ]) BETWEEN Nz([Forms]![MAIN]![BASFORM]![Поле2],#1/1/1000#) AND Nz([Forms]![MAIN]![BASFORM]![Поле4],#1/1/3000#)))
GROUP BY BASE.Район, STATUS.[Метод ];
Так что то не работает.
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
18.04.2017, 19:37 4
Цитата Сообщение от urman Посмотреть сообщение
не работает
Возможно из-за того, что поле даты написано с пробелом: STATUS.[Дата ] во Where
0
7 / 7 / 0
Регистрация: 10.04.2015
Сообщений: 282
18.04.2017, 19:57  [ТС] 5
Цитата Сообщение от mobile Посмотреть сообщение
Возможно из-за того, что поле даты написано с пробелом: STATUS.[Дата ] во Where
Мобайл я сделал вот так:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT BASE.Район,
 COUNT(IIf([STATUS].[Возрастная группа]="дети" AND [STATUS].[Метод]="ОБРАЩЕНИЕ",11)) AS [дети обращение],
 COUNT(IIf([STATUS].[Возрастная группа]="подростки" AND [STATUS].[Метод]="ОБРАЩЕНИЕ",11)) AS [подростки обращение],
 COUNT(IIf([STATUS].[Возрастная группа]="взрослые" AND [STATUS].[Метод]="ОБРАЩЕНИЕ",11)) AS [Взрослые обращение],
 STATUS.[Метод]
 
FROM BASE
 LEFT JOIN STATUS ON BASE.ID = STATUS.SID
 
WHERE (((STATUS.[Дата]) BETWEEN Nz([Forms]![MAIN]![BASFORM]![Поле2],#1/1/1000#)
 AND Nz([Forms]![MAIN]![BASFORM]![Поле4],#1/1/3000#))
 AND ((STATUS.[Метод])="ОБРАЩЕНИЕ"))
 
GROUP BY BASE.Район, STATUS.[Метод];
теперь не учитывает значение полей формы, просто выдает выдает все значения Count

Добавлено через 3 минуты
Цитата Сообщение от mobile Посмотреть сообщение
Возможно из-за того, что поле даты написано с пробелом: STATUS.[Дата ] во Where
извиняюсь! да все заработало вроде ща проверю... Спасибо!
0
Модератор
Эксперт MS Access
6012 / 2840 / 693
Регистрация: 12.06.2016
Сообщений: 7,630
18.04.2017, 21:47 6
urman,

Зачем здесь (и в других подобных местах) проверка условия [STATUS].[Метод]="ОБРАЩЕНИЕ" ?
SQL
1
 .....IIf([STATUS].[Возрастная группа]="дети" AND [STATUS].[Метод]="ОБРАЩЕНИЕ"....
Ведь это условие уже проверилось в WHERE, отобраны только те записи, которые ему удовлетворяют.
Зачем снова проверять?
0
7 / 7 / 0
Регистрация: 10.04.2015
Сообщений: 282
19.04.2017, 04:20  [ТС] 7
Цитата Сообщение от Capi Посмотреть сообщение
Ведь это условие уже проверилось в WHERE, отобраны только те записи, которые ему удовлетворяют.
Зачем снова проверять?
в WHERE аксесс почему то дописывает условие автоматом, да почему то запрос в таком виде работает раз через раз или вообще не работает. Почему ни как понять не могу.
0
19.04.2017, 04:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2017, 04:20
Помогаю со студенческими работами здесь

SQL запрос между 2мя датами
Здравствуйте, подскажите,пожалуйста, что не так в моём запросе необходимо сформировать отчет на...

Запрос на вывод данных между определенными датами
Добрый день. Задача такая: вывести данные, у которых дата в BIRTHDATE находится между...

SQL запрос между 2 датами + к нему дополнительное условие
Приветствую всех! У меня возникла одна проблема. Как добавить ещё условие для поиска по...

Запрос подсчитывающий число дней между датами без выходных
Привет всем! Вот написал запрос на вычисление количества дней между датами, но он почему-то не...


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

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