powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не могу написать запрос на Interbase 2009, FireBird 2.5
12 сообщений из 12, страница 1 из 1
Не могу написать запрос на Interbase 2009, FireBird 2.5
    #39337319
Delphi159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
Не могу написать запрос на Interbase 2009, FireBird 2.5
    #39337322
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delphi159,

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

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

зачем проверять в case то, что уже гарантировано в where ?
Вы правы, не надо в where taxable=1
...
Рейтинг: 0 / 0
Не могу написать запрос на Interbase 2009, FireBird 2.5
    #39337333
Delphi159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис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
Не могу написать запрос на Interbase 2009, FireBird 2.5
    #39337337
Delphi159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если так:
Код: 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
Не могу написать запрос на Interbase 2009, FireBird 2.5
    #39337342
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delphi159,

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

Delphi159в Interbase 2009: expression evaluation not supported

С косяками IB в их суппорт.
...
Рейтинг: 0 / 0
Не могу написать запрос на Interbase 2009, FireBird 2.5
    #39337352
Dmitry Kurbsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
group by taxable
...
Рейтинг: 0 / 0
Не могу написать запрос на Interbase 2009, FireBird 2.5
    #39337462
Delphi159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис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
Не могу написать запрос на Interbase 2009, FireBird 2.5
    #39337879
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delphi159Это не косяк, скорее всего в IB 2009 не было поддержки использования выражения.

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

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

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


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