Консультация № 108399
07.11.2007, 13:28
0.00 руб.
0 5 5
вопрос по access: есть таблица покупок, где на дату приходиться больше одной покупки. нужно посчитать количество дней, в которых были совершены покупки. Запрос типа:

select count (distinct Покупки.Дата)
from Покупки;

distinctrow тоже не отрабатывает)
каков правильный синтаксис написания подобного рода запросов?
Заранее, спасибо

Обсуждение

Неизвестный
07.11.2007, 13:50
общий
это ответ
Здравствуйте, Aikijin!
Попробуйте так:

select count (*) from (select distinct Дата from Покупки)
Неизвестный
07.11.2007, 15:36
общий
это ответ
Здравствуйте, Aikijin!
select Покупки.Дата, count(*)
from Покупки
group by Покупки.Дата
Неизвестный
08.11.2007, 03:04
общий
это ответ
Здравствуйте, Aikijin!
Странно, почему у Вас не отработал запрос select count (distinct Покупки.Дата) from Покупки.
Скорее всего, это просто не полный запрос, который Вы используете в реальном коде.
Смотрите приложение, все верно!

Приложение:
SELECT COUNT(DISTINCT ДАТА) FROM (SELECT TO_DATE(‘10.01.2007‘) ДАТА FROM dual UNION ALL SELECT TO_DATE(‘10.01.2007‘) FROM dual UNION ALL SELECT TO_DATE(‘12.01.2007‘) FROM dual UNION ALL SELECT TO_DATE(‘12.01.2007‘) FROM dual UNION ALL SELECT TO_DATE(‘12.01.2007‘) FROM dual UNION ALL SELECT TO_DATE(‘13.01.2007‘) FROM dual UNION ALL SELECT TO_DATE(‘14.01.2007‘) FROM dual UNION ALL SELECT TO_DATE(‘14.01.2007‘) FROM dual);--результат: 4
Неизвестный
08.11.2007, 08:48
общий
это ответ
Здравствуйте, Aikijin!
Попробуйте следующее
select count(s.дата)
from (SELECT дата
FROM покупки
GROUP BY дата) as s
вначале группируем по датам , а потом определяем кол-во дней
Неизвестный
09.11.2007, 03:54
общий
это ответ
Здравствуйте, Aikijin!

Access SQL не поддерживает distinct для аргументов агрегатных функций. А вот в
Transact-SQL (MS SQL Server) Вы вполне могли бы написать

select count (distinct Покупки.Дата)
from Покупки

В Access Вам поможет

select count (*)
from (select distinct Покупки.Дата from Покупки) AS A;

Форма ответа