Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2011, 00:20   #1
maks1503
 
Регистрация: 11.07.2011
Сообщений: 9
По умолчанию Бд MS Access

Помогите пожалуйста, есть запрос:
SELECT COUNT(MAX(1)) cnt
FROM Выплаты
GROUP BY Счет
HAVING MAX(Дата)< DATE '2011-01-01';

он работает в Oracle, как его изменить чтобы он не выдавал ошибку в MS Access.
Обращение к MS Access через компонент в Delphi ADOQuery!!!

Выдает ошибку "Невозможно использование статической функции в выражении COUNT(MAX(1))"

Последний раз редактировалось maks1503; 28.11.2011 в 00:36.
maks1503 вне форума Ответить с цитированием
Старый 28.11.2011, 01:13   #2
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

И он работает в Oracle ? Может всё таки перепроверите или посмотрите повнимательней?
ReportCube вне форума Ответить с цитированием
Старый 28.11.2011, 01:15   #3
maks1503
 
Регистрация: 11.07.2011
Сообщений: 9
По умолчанию

Работает!!! Проверял!!
maks1503 вне форума Ответить с цитированием
Старый 28.11.2011, 09:26   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Для Акцесса
Код:
HAVING MAX(Дата)<#2011-01-01#;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.11.2011, 09:39   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Интересное выражение COUNT(MAX(1))
А заменить его на COUNT(*)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.11.2011, 11:51   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Интересное выражение COUNT(MAX(1))
+1

я в шоке! очевидно, что Max(1) даст 1-цу
но зачем (не, вот так - ЗАЧЕМ?!) писать такое в функции count() я даже предположить не могу...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.11.2011, 02:39   #7
maks1503
 
Регистрация: 11.07.2011
Сообщений: 9
По умолчанию

SELECT COUNT(max(счет)) cnt
FROM Выплаты
group by счет
HAVING MAX(Дата)< DATE '2011-01-01';
нати количество счетов в которых период выплат не превышает 2011 года

Последний раз редактировалось maks1503; 29.11.2011 в 02:49.
maks1503 вне форума Ответить с цитированием
Старый 29.11.2011, 08:47   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если я правильно понял, что у Вас есть в БД и что Вы хотите получить,
то запрос будет выглядеть примерно так:
Код:
SELECT COUNT(*) cnt
FROM (SELECT счёт from Выплаты
          group by счет
          HAVING MAX(Дата)< DATE '2011-01-01');
ну, или в нотации SQL MS Access:
Код:
SELECT COUNT(*) cnt
FROM (SELECT счёт from Выплаты
          group by счет
          HAVING MAX(Дата)< DateSerial(2011,01,01));
или так:
Код:
SELECT COUNT(*) as cnt
FROM (SELECT счёт, MAX(Дата) as MaxDate from Выплаты
          group by счет ) AA
WHERE  AA.MaxDate < DateSerial(2011,01,01)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access+word и access+pdf xanderg Microsoft Office Access 2 07.11.2010 13:51
Запрос с датами и временем к Access [D7, Access] alexandr2010 БД в Delphi 3 26.07.2010 22:19
Есть БД на Access 2.0, нужно открыть в Access 2003 Spirit_33 Microsoft Office Access 1 23.07.2009 07:59
Access 97, открыть базу данных Access alexhol Microsoft Office Access 0 27.04.2009 12:10
Delphy и Access.вводя инфу во вторичный файл Access, она отражалась в первом ADOTable Lev БД в Delphi 0 11.11.2007 12:14