Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.18;
Скачать: CL | DM;

Вниз

групировка в sql запросе   Найти похожие ветки 

 
Константин_   (2006-11-23 17:28) [0]

есть таблица формата
sumall,date1 с данными
10 | 01.01.2006
20 | 02.01.2006
30 | 01.02.2006
каким образом можно сгрупировать таблицу по дате учитывая только месяц и год т.е.

select Sum(sumall),date1 from таблица.dbf
group by ???????

Если кто знает как сделать, подскажите, плз.


 
ANB ©   (2006-11-23 17:46) [1]

отрезать месяц и год. Желательно год поставить спереди. Группировать по получившемуся полю.


 
Savek   (2006-11-23 18:21) [2]


select Sum(sumall),date1 from
(select sumall, Year(date1) as date1 from таблица.dbf)
group by date1


 
k2 ©   (2006-11-23 18:39) [3]

Savek   (23.11.06 18:21) [2]
и што будет в date1 ?


 
Бугага ©   (2006-11-24 04:28) [4]

[2]
Ой мама...


 
Константин_   (2006-11-24 08:05) [5]

2 ANB а можно подробнее, как в sql запросе преобразовать поле что бы получить YYYY.MM

2 Savek запрос сначало затыкается на втором select, а потом не хочет воспринимать Year(date1)


 
Savek   (2006-11-24 09:13) [6]

Проверял на Accesse, вероятно, для твоей базы ф-ия Year (выделение года из даты) имеет другой синтаксис


 
Константин_   (2006-11-24 09:22) [7]

база DBF IV, работаю через bde


 
ЮЮ ©   (2006-11-24 10:02) [8]


> есть таблица формата
> sumall,date1 с данными


Неужели именно в такую таблицу пользователи заносят данные?

Гуппировать надо все данные из таблицы? Или ещё отбирать перед группировкой надо?


 
ANB ©   (2006-11-24 12:03) [9]


>
> Константин_   (24.11.06 09:22) [7]

Залезь в хелп по локал скл и посмотри. У меня оракл.


 
sniknik ©   (2006-11-24 13:07) [10]

> база DBF IV, работаю через bde
с указания что используется надо начинать, все от этого зависит

можно попробовать
select date1-(EXTRACT(DAY FROM date1)-1) AS GrDate, Sum(sumall) AS sumall from таблица.dbf
group by GrDate

или в группировке указать 0 (индекс поля в списке), либо прям все вычисление... ну не помню я синтаксиса Local Sql.


 
Anatoly Podgoretsky ©   (2006-11-24 13:22) [11]

> sniknik  (24.11.2006 13:07:10)  [10]

Справка говорит

Note Derived values (calculated values) cannot be used as the basis for a GROUP BY clause.

Но автор может сам проверить все три варианта.


 
ANB ©   (2006-11-24 15:37) [12]


> Anatoly Podgoretsky ©   (24.11.06 13:22) [11]

Оракл тоже не разрешает использовать алиасы вычисленных запросом полей использовать в предложении group by. Что легко обходится либо вложением запросов либо группировкой по вычисляемому выражению.


 
Anatoly Podgoretsky ©   (2006-11-24 16:09) [13]

> ANB  (24.11.2006 15:37:12)  [12]

Не знаю как Оракл, но это вещь очень сильно зависимая от сервера.
Одни позволяют алиас, другие только номер, третьи требуют повторения выражения в части GROUP/ORDER

Надо конкретно смотреть.


 
ANB ©   (2006-11-24 16:44) [14]


> Надо конкретно смотреть.

Ну дык я и грю - залезть в хелп, потом попробовать. автору вообще надо сначала найти способ выдернуть месяц с годом


 
Jeer ©   (2006-11-24 16:49) [15]

Переписать таблицу.
Поля: год полугодие квартал месяц день час минута секунда... пикосекунда.


 
Stanislav ©   (2006-11-24 17:07) [16]

Jeer ©   (24.11.06 16:49) [15]
и еще перейти на Access...
чтобы работало как у Savek   (23.11.06 18:21) [2].


 
Константин_   (2006-11-24 17:17) [17]

Вообщем дошел до следующего запроса
select sumall,cast(EXTRACT(month FROM date1) as int) as m,cast(EXTRACT(Year FROM date1) as int) as Y
from "c:\мой\Проекты\Предприятия\Dbf\akt.dbf"
where date1 is not null
order by     2,3

а если пытаюсь сгрупировать (group by 2,3) он выдает ошибку "Invalid use on key word"

Ребят может кто даст ссылку на на русский хелт по sql (для Delphi 7 и BDE)?


 
Stanislav ©   (2006-11-24 17:32) [18]

А так работает?
GROUP BY cast(EXTRACT(month FROM date1) as int), cast(EXTRACT(Year FROM
date1) as int)


 
ANB ©   (2006-11-24 17:33) [19]


> Константин_   (24.11.06 17:17) [17]

а
group by cast(EXTRACT(month FROM date1) as int), cast(EXTRACT(Year FROM date1) as int)
пробовал ?


 
Константин_   (2006-11-24 17:37) [20]

таже самая ошибка (((


 
Anatoly Podgoretsky ©   (2006-11-24 18:15) [21]

> ANB  (24.11.2006 16:44:14)  [14]

Месяц с годом вытянуть нельзя, но можно по отдельности, что одно и тоже, позволит и группировать и сортировать в любоа порядке и во where использовать.


 
Константин_   (2006-11-24 18:18) [22]

у меня они и вытянуты по отдельности - при запросе помещаются в разные поля
а групировка не идет, зараза


 
Anatoly Podgoretsky ©   (2006-11-24 18:18) [23]

> Константин_  (24.11.2006 17:37:20)  [20]

Приводи точный вопрос, а твое мамой клянусь малого стоит


 
Anatoly Podgoretsky ©   (2006-11-24 18:18) [24]

> Константин_  (24.11.2006 17:37:20)  [20]

Забыл спросить, а справку ты уже прочитал?


 
Константин_   (2006-11-24 18:23) [25]

справку не читал, т.к русской нет... а с английским туго... сейчас смотрю faq, те что нашел...


 
ЮЮ ©   (2006-11-25 09:47) [26]

Anatoly Podgoretsky ©   (24.11.06 18:15) [21]
> ANB  (24.11.2006 16:44:14)  [14]

Месяц с годом вытянуть нельзя, но можно по отдельности, что одно и тоже, позволит и группировать и сортировать в любоа порядке и во where использовать.


сортировать(через указание номера) и в в WHERE, никто не спорит, можно, а вот с GROUP BY облом:
Note Derived values (calculated values) cannot be used as the basis for a GROUP BY clause.

Остается использовать Local View


 
Константин_   (2006-11-25 10:40) [27]

Всем спасибо за помощь, буду искать дрю путь.



Страницы: 1 вся ветка

Текущий архив: 2007.02.18;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.058 c
15-1169624052
Hero
2007-01-24 10:34
2007.02.18
Помогите найти компонет типа richedit но с вставкой битмапов


15-1169595372
IMHO
2007-01-24 02:36
2007.02.18
Опрос: где ваши программы хранят данные?


2-1170330701
Alek_1
2007-02-01 14:51
2007.02.18
вывести дату...


2-1170322622
марат
2007-02-01 12:37
2007.02.18
Изменение названия поля


3-1164623047
Feds
2006-11-27 13:24
2007.02.18
Ошибка с проверкой на Null