Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выборка по полю TDateTime FireBird 1.5 [D6, FireBird 1.5]


S@shka ©   (2004-04-21 16:23:00) 

Есть таблица с записями вида...
MyDate                     Value
----------------------------------------
01.04.2004 11:00:15         1
01.04.2004 12:10:45         2
01.04.2004 13:00:10         2
01.04.2004 14:50:35         3
02.04.2004 01:00:15         1
02.04.2004 02:00:15         1
и т.д вообщем
Надо сделать выборку чтобы подсчитать SUM(Value) за день или месяц
Чтобы результат был....
01.04.2004  8
02.04.2004  2 и. т.д
или
04.2004     10
Как это сделать ??? Можно ли в запросе или надо как-то процедуру писать?


Jack128   (2004-04-27 15:44:00) [1]


> Jack128 работает корректно
очень приятно ;-) , но это был пример на твое замечание по поводу представления даты в определенном формате, к сортировке он не имеет никакого отнашения :-))


Johnmen   (2004-04-27 15:40:00) [2]

>S@shka ©   (27.04.04 15:30) [11]
>пример >> Jack128 работает корректно

Это случайность, обусловленная твоими данными.
Да чем он отличается от [1] ?

Если у тебя 3 диалект, то можно проще
SELECT CAST(MyDate AS DATE) AS MyDateA, SUM(Value) AS MySum
FROM Table
GROUP BY 1
ORDER BY 1


S@shka   (2004-04-27 15:30:00) [3]

>> Johnmen
хех это то я знаю.
однако факт остается фактом
пример >> Jack128 работает корректно


Johnmen   (2004-04-27 14:39:00) [4]

>факт остается фактом мне то нужно отсортированные данные получить.

Ещё раз. GROUP BY никакого отношения к сортировке не имеет, в отличие от ORDER BY (см.англо-русский словарь :))

ORDER BY 1


Соловьев   (2004-04-27 14:37:00) [5]


> S@shka ©   (27.04.04 14:33) [8]

Такие вещи лучше на клиенте делать.


S@shka   (2004-04-27 14:33:00) [6]

>> Jack128
Большое спасибо


S@shka   (2004-04-27 14:31:00) [7]

А серьезно?
Хорошо. На врал - не сортирует GRoup By может быть (а мож и сортирует :))
Но ...
факт остается фактом мне то нужно отсортированные данные получить.


Jack128   (2004-04-27 14:21:00) [8]


> причем именно в формате d.m.yyyy


SELECT
cast(EXTRACT(MONTH FROM MyDate)||'/'||
EXTRACT(DAY FROM MyDate)||'/'||
EXTRACT(YEAR FROM MyDate) as date) AS MyDateA,
SUM(Value) AS MySum
FROM Table
GROUP BY 1

вот тебе в формате даты, сам решай в каком формате эту дату представлять..


Johnmen   (2004-04-27 14:14:00) [9]

>Хе-хе-хе
>есно такое не катит :)

Плохо лыжи смазал...
:)))


S@shka   (2004-04-27 14:12:00) [10]

Хе-хе-хе
есно такое не катит :)


Johnmen   (2004-04-27 14:09:00) [11]

>оператор GROUP By осуществляет сортировку

:)))))) никогда он этого не делал !

ORDER BY 2


S@shka   (2004-04-27 14:06:00) [12]

Диалект 3.
Эта выборка работает но
оператор GROUP By осуществляет сортировку по дням
т.е.
в итоге видим
23.4.2004 15
24.4.2004 10
26.3.2004 1
27.3.2004 2

причем именно в формате d.m.yyyy

а как по дате чтобы было отсортировано?
т.е.
26.3.2004 1
27.3.2004 2
23.4.2004 15
24.4.2004 10


Johnmen   (2004-04-21 16:41:00) [13]

SELECT
 EXTRACT(DAY FROM MyDate)||'.'||
 EXTRACT(MONTH FROM MyDate)||'.'||
 EXTRACT(YEAR FROM MyDate) AS MyDateA,
 SUM(Value) AS MySum
FROM Table
GROUP BY 1


Кстати, какой диалект ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо