Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не могу написать запрос на Interbase 2009, FireBird 2.5 / 12 сообщений из 12, страница 1 из 1
30.10.2016, 15:17
    #39337319
Delphi159
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать запрос на Interbase 2009, FireBird 2.5
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select 
  case when taxable=1 then  sum(I.Price*I.qty*18/118)
  else 0
  end as Vat
from Income I
where  inc_id=3060  and 
       taxable=1  and 
       qty>0


Error:
Interbase 2009: expression evaluation not supported
Firebird 2.5: Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).

Добавление поля таблицы ничего не меняет:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select Price,
  case when taxable=1 then  sum(I.Price*I.qty*18/118)
  else 0
  end as Vat
from Income I
where  inc_id=3060  and 
       taxable=1  and 
       qty>0
Group by Price
...
Рейтинг: 0 / 0
30.10.2016, 15:31
    #39337322
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать запрос на Interbase 2009, FireBird 2.5
Delphi159,

зачем проверять в case то, что уже гарантировано в where ?
...
Рейтинг: 0 / 0
30.10.2016, 15:32
    #39337324
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать запрос на Interbase 2009, FireBird 2.5
Delphi159,

sum надо поверх case применять
...
Рейтинг: 0 / 0
30.10.2016, 15:35
    #39337327
Delphi159
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать запрос на Interbase 2009, FireBird 2.5
hvladDelphi159,

зачем проверять в case то, что уже гарантировано в where ?
Вы правы, не надо в where taxable=1
...
Рейтинг: 0 / 0
30.10.2016, 15:52
    #39337333
Delphi159
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать запрос на Interbase 2009, FireBird 2.5
Симонов ДенисDelphi159,

sum надо поверх case применять

Симонов Денис,
тогда выводит:
Interbase 2009: Invalid aggregate reference- причина в sum(I.Price*I.qty*18/118)
Firebird 2.5: Nested aggregate functions are not allowed

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select 
  sum(case when taxable=1 then  sum(I.Price*I.qty*18/118) 
  else 0
  end) as Vat
from Income I
where  inc_id=3060  and 
       taxable=1  and 
       qty>0


Если вместо sum(I.Price*I.qty*18/118) написать, например, 1, тогда работает.
...
Рейтинг: 0 / 0
30.10.2016, 15:57
    #39337337
Delphi159
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать запрос на Interbase 2009, FireBird 2.5
А если так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select 
  sum(case when taxable=1 then  I.Price*I.qty*18/118 
  else 0
  end) as Vat
from Income I
where  inc_id=3060  and 
       taxable=1  and 
       qty>0



заработал в Firebird 2.5, а в Interbase 2009: expression evaluation not supported
...
Рейтинг: 0 / 0
30.10.2016, 16:07
    #39337342
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать запрос на Interbase 2009, FireBird 2.5
Delphi159,

тяжёлый случай...
Ты либо в where указывай taxable=1, либо в case.

Delphi159в Interbase 2009: expression evaluation not supported

С косяками IB в их суппорт.
...
Рейтинг: 0 / 0
30.10.2016, 16:48
    #39337352
Dmitry Kurbsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать запрос на Interbase 2009, FireBird 2.5
group by taxable
...
Рейтинг: 0 / 0
31.10.2016, 02:48
    #39337462
Delphi159
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать запрос на Interbase 2009, FireBird 2.5
Симонов ДенисDelphi159,

Ты либо в where указывай taxable=1, либо в case.

Код: sql
1.
2.
3.
4.
5.
select 
  sum(case when taxable=1 then  I.Price*I.qty*18/118  end) as Vat
from Income I
where  inc_id=3060 and 
       qty>0


Delphi159в Interbase 2009: expression evaluation not supported
С косяками IB в их суппорт.
Это не косяк, скорее всего в IB 2009 не было поддержки использования выражения. Как можно обойти без выражения в IB?
...
Рейтинг: 0 / 0
31.10.2016, 13:43
    #39337879
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать запрос на Interbase 2009, FireBird 2.5
Delphi159Это не косяк, скорее всего в IB 2009 не было поддержки использования выражения.

Или у тебя опять какое-нибудь из полей float вместо decimal.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
31.10.2016, 15:31
    #39338031
Delphi159
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать запрос на Interbase 2009, FireBird 2.5
Dimitry Sibiryakov Или у тебя опять какое-нибудь из полей float вместо decimal.

Dimitry Sibiryakov , вы правы, оба поля(Price,qty) были типа float. Спасибо!
...
Рейтинг: 0 / 0
31.10.2016, 16:20
    #39338111
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу написать запрос на Interbase 2009, FireBird 2.5
Delphi159Price ... были типа float.Безумству храбрых, поем мы песню! (С)

Флоат пригоден разве что для определения температуры воды и интервала времени для поливки кактусов, но никак не для цены.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не могу написать запрос на Interbase 2009, FireBird 2.5 / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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