Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Проблема с запросом / 3 сообщений из 3, страница 1 из 1
20.06.2008, 07:46
    #35384097
cdrem
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с запросом
Добрый день!
Есть такой запрос:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
SELECT plangroup.kodgp kgp, plangroup.naim nim, cena_gp.cg_cena cgc,
(case when a.oetrn_invdate<'13.05.2008'  then  
 case when a.oetrn_price> 2000  then
  round(sum(a.oetrn_oinvqty*a.oetrn_price)/sum(a.oetrn_oinvqty), 2 ) else
  round(sum(a.oetrn_oinvqty*a1.oemer_pricevlt)/sum(a.oetrn_oinvqty), 2 ) end
  else round(sum(a.oetrn_oinvqty*a1.oemer_pricevlt)/sum(a.oetrn_oinvqty), 2 ) end) price3,
(case when a.oetrn_invdate<'13.05.2008'  then  
 case when a.oetrn_price> 2000  then
  round(sum(b.oetrn_oinvqty*b.oetrn_price)/sum(b.oetrn_oinvqty), 2 ) else
  round(sum(b.oetrn_oinvqty*b1.oemer_pricevlt)/sum(b.oetrn_oinvqty), 2 ) end 
  else round(sum(b.oetrn_oinvqty*b1.oemer_pricevlt)/sum(b.oetrn_oinvqty), 2 ) end) price4
FROM plangroup
join cena_gp on plangroup.item=cena_gp.cg_item and
cena_gp.cg_data='01.05.2008'
left join oetrn as a ON plangroup.item=a.oetrn_item and
(a.oetrn_invdate BETWEEN '02.05.2008' and '01.06.2008')
left join oemer as a1 ON
a.oetrn_ordnum=a1.oemer_ordnum and
(a.oetrn_linnum=a1.oemer_linnum)
left join oetrn as b ON plangroup.item=b.oetrn_item and
(b.oetrn_invdate BETWEEN '02.05.2008' and '01.06.2008')
left join oemer as b1 ON
b.oetrn_ordnum=b1.oemer_ordnum and
(b.oetrn_linnum=b1.oemer_linnum)
WHERE
plangroup.prog='цены'
group by  1 , 2 , 3 
order by  1 

в таком виде при выполнении выдается ошибка: "The column (price3) must be in the GROUP BY list",
а если в group by добавить 4 и 5 столбец, то пишет: "Cannot group by aggregate column"

раньше не было case и все работало. в чем может быть дело?
...
Рейтинг: 0 / 0
20.06.2008, 09:09
    #35384159
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с запросом
Попробуй написать CASE внутри SUM, а не наоборот, как у тебя сейчас сделано.
Но то есть что-то вроде такого:
Код: plaintext
SUM(case when ... then ... else ... end)
...
Рейтинг: 0 / 0
20.06.2008, 09:24
    #35384185
cdrem
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с запросом
Прямо спас меня! Спасибо, все завелось!
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Проблема с запросом / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]