![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите SQL запросом [D6, dBase, FoxPro]
rel_ © (2003-12-04 10:24:00)
Мастера, отсоветуйте что-нибудь.
Необходимо отсотрировать, а ещё лучше прогруппировать данные по полю, содержащему данные (месяц и год) в след. виде:
MES
10.2003
12.2003
и.т.д.
пишу следующее:
select cast(SUBSTRING(mes FROM 1 FOR 2) as INTEGER) as nmes,
cast(SUBSTRING(mes FROM 4 FOR 4) as INTEGER) as ngod,
sum(pokaz)
from uslug
group by ngod, nmes
order by ngod, nmes
Если просто сортирую - всё проходит. При группировке - ругается: "invalid field name" ???
Sandman25 (2003-12-04 11:24:00) [1]
[11] sniknik © (04.12.03 11:22)
Да я и не спорил.
sniknik (2003-12-04 11:24:00) [2]
не заметил
> Нет. Прислушайтесь к [8]. Может, там и case есть :)
есть iif()
rel_ (2003-12-04 11:24:00) [3]
to sniknik © Это вы о чём с Sandman25 © говорите. не совсем понял ? :))
sniknik (2003-12-04 11:22:00) [4]
Sandman25 © (04.12.03 11:11) [10]
> Возможно.
точно. я использую, и после ответа перепроверил для гарантии.
Sandman25 (2003-12-04 11:11:00) [5]
[8] sniknik © (04.12.03 10:55)
Возможно. Я ADO никогда не использовал. Может и зря :)
[9] rel_ (04.12.03 10:55)
Нет. Прислушайтесь к [8]. Может, там и case есть :)
sniknik (2003-12-04 10:55:00) [6]
Sandman25 © (04.12.03 10:52) [5]
существенная добавка. :о)) jet для dBase/Paradox так может. (возможно/скорее всего и другие тоже могут)
rel_ (2003-12-04 10:55:00) [7]
to Sandman25 ©
всё понятно.
Есть ещё вопросик : есть ли что-то вроде case"а для локального SQL ?
Sandman25 (2003-12-04 10:53:00) [8]
Выдержка из LocalSQL.hlp:
Note Derived values (calculated values) cannot be used as the basis for a GROUP BY clause.
Johnmen (2003-12-04 10:53:00) [9]
Более того, в соответствии со стандартом SQL92 группировать можно только по реальным полям, указывая их имена.
Sandman25 (2003-12-04 10:52:00) [10]
В смысле в LocalSQL такие запросы не проходят.
Sandman25 (2003-12-04 10:49:00) [11]
Для Paradox такие запросы не проходят. По вычисляемому полю не может быть группировки. Надо делать дополнительное поле типа month_number.
Silver Alex (2003-12-04 10:44:00) [12]
нет, наверное так
select cast(SUBSTRING(mes FROM 1 FOR 2) as INTEGER) as nmes,
cast(SUBSTRING(mes FROM 4 FOR 4) as INTEGER) as ngod,
sum(pokaz)
from uslug
group by cast(SUBSTRING(mes FROM 1 FOR 2) , cast(SUBSTRING(mes FROM 4 FOR 4) as INTEGER)
order by 1, 2
rel_ (2003-12-04 10:41:00) [13]
C order by всё проходит и с номером по порядку и при обращении по имени. А вот с group by - нет.
Silver Alex (2003-12-04 10:34:00) [14]
попробуй вместо названия поля поставить его значение по порядку
select cast(SUBSTRING(mes FROM 1 FOR 2) as INTEGER) as nmes,
cast(SUBSTRING(mes FROM 4 FOR 4) as INTEGER) as ngod,
sum(pokaz)
from uslug
group by ngod, nmes
order by 1, 2