Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Вниз

групировка в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.14 c
3-1164250027
~SerJant~
2006-11-23 05:47
2007.02.18
Использование FastReport (TfrxBDEDataBase)


15-1169934087
PHPdeveloper
2007-01-28 00:41
2007.02.18
баг


2-1170272032
22b
2007-01-31 22:33
2007.02.18
POST на API


15-1170099278
vasIzmax
2007-01-29 22:34
2007.02.18
Ну, на конец-то...


2-1170418335
Beavercrazy
2007-02-02 15:12
2007.02.18
Закачивается на сайт битый файл





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский