Форум: "Базы";
Текущий архив: 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.111 c