Access не понимает Group By DateValue(MyDateTime)

knocking
Дата: 19.11.2009 10:04:05
Доброго дня, Уважаемые.
Есть поле MyDateTime, тип дата и время
Нужно сгруппировать данные по дате (без учета времени)

Делаю так:

Select 
   Sum(ResultUsd) As ResultUsd, DateValue(MyDateTime) As MyDate 
From 
   MyTable
Group By 
  DateValue(MyDateTime)

При выполнении вылезает ошибка: "Попытка выполнить запрос, который не включает указанное выражение MyDateTime, как часть статистической группы или функции."

Другие СУБД вроде понимают выражения типа Group By DateValue(MyDateTime).

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

З.Ы. Делфи+Адо+Аксес
а.четакова
Дата: 19.11.2009 11:09:01
knocking
Доброго дня, Уважаемые.
Есть поле MyDateTime, тип дата и время
Нужно сгруппировать данные по дате (без учета времени)

Делаю так:

Select 
   Sum(ResultUsd) As ResultUsd, DateValue(MyDateTime) As MyDate 
From 
   MyTable
Group By 
  DateValue(MyDateTime)

При выполнении вылезает ошибка: "Попытка выполнить запрос, который не включает указанное выражение MyDateTime, как часть статистической группы или функции."

Другие СУБД вроде понимают выражения типа Group By DateValue(MyDateTime).

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

З.Ы. Делфи+Адо+Аксес
А вы это реальный sql процитировали, или для "облегчения" понимания привели просто некое формальное представление вашей проблемы? Ибо описанная вами ошибка должна выдаваться - но только в том случае, если в приведенном select'е поле MyDateTime будет указано еще и в чистом виде. Оно в реальности у вас там еcть или нет?
knocking
Дата: 19.11.2009 11:16:34
Это почти реальный кусок кода. Не хватает только WHERE и ORDER. Но они никак на результат не влияют, поэтому для наглядности убрал.
а.четакова
Дата: 19.11.2009 11:32:45
knocking
Это почти реальный кусок кода. Не хватает только WHERE и ORDER. Но они никак на результат не влияют, поэтому для наглядности убрал.
не влияют - значит, ошибка с ними и без них одна и таже? иными словами, у вас этот SQL - именно в приведенном виде - выдает описанную ошибку?

Вот за делфи не знаю, а при выполнении вот этого вашего sql прямо в MSAccess CurrentProject.Connection.Execute прожевал этот sql без ошибок, только что проверил.
knocking
Дата: 19.11.2009 11:55:01
Уряяяя. И все таки значит влияют.

У меня было
Group By 
  DateValue(MyDateTime) 
Order By 
  MyDateTime

Сделал так:

Group By 
  DateValue(MyDateTime) 
Order By 
  DateValue(MyDateTime)

В общем в Order By тоже нужно добавлять DateValue. БОЛЬШОЕ СПАСИБО, все заработало.
knocking
Дата: 19.11.2009 11:56:22
а.четакова, а где найти этот MSAccess CurrentProject.Connection.Execute? Что бы там тестировать запросы.
а.четакова
Дата: 19.11.2009 12:02:39
knocking
Уряяяя. И все таки значит влияют.
вот-вот. я потому и уточнил насчет упрощений приведенного sql - вы не первый, кто с "водой" выплеснул ребенка при формулировании проблемы.
а.четакова
Дата: 19.11.2009 12:09:03
knocking
а.четакова, а где найти этот MSAccess CurrentProject.Connection.Execute? Что бы там тестировать запросы.
CurrentProject.Connection.Execute SQL - это метод такой для выполнения запросов, в коде VBA:
Dim s$
s = "Select Sum(ResultUsd) As ResultUsd, DateValue(MyDateTime) As MyDate From MyTable Group By DateValue (MyDateTime)"
Dim ds As ADODB.Recordset
Set ds = CurrentProject.Connection.Execute(s) '<-- 
Do While Not ds.EOF
    Debug.Print ds(0), ds(1)
    ds.MoveNext
Loop
а MSAccess - это Microsoft Access
knocking
Дата: 19.11.2009 12:26:06
Спб.