Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > SQL- запрос к IB


Автор: Li 4.8.2004, 23:31
Пожалуйста, помогите, что здесь можно придумать?
Есть таблица Tab1(ID as Integer, Sum as Float, NDS as Char)
Необходимо выбрать для каждого ID значение суммы с НДС, т.е.
result = Sum*1.2, если NDS = 'y'
result = Sum, если NDS = 'n'
Сделать это нужно одним запросом Select и без изменения структуры таблицы.
Подскажите, пожалуйста, возможно ли это в IB.
Спасибо!

Автор: <Spawn> 5.8.2004, 05:00
Код
SELECT SUM * 1.2
  FROM Tab1
 WHERE NDS = 'Y'
UNION
SELECT SUM
  FROM Tab1
 WHERE NDS = 'N'

Добавлено @ 05:02
Возможно, в IB тоже есть аналог UNION ALL, для того чтобы не были исключены дублированые записи - с этим сам разберись.

Автор: Li 5.8.2004, 09:42
можно ли это сделать без union?
очень желательно

Автор: Ateh 5.8.2004, 10:33
Да, можно получить результат без union!
Я не спец в IB, но SQL-запрос можно сделать подобным образом:

SELECT Table.id, IIf([Table]![nds]="y ",[Table]![sum]*1.2, [Table]![sum]) AS Выражение1, nds
FROM [Table];

P.S.:
IIf (условие, если True, если False)

Автор: gemoglobin 5.8.2004, 16:02
можно через хранимую процедуру типа

for
select ...
from ...
where ...
into
do
begin
тут проверяешь и выдаешь результат
suspend;
end


хранимые процедуры работают быстро за это не волнуйся

Автор: <Spawn> 5.8.2004, 16:39
Чем тебе обьединение множеств не навится?

Автор: Гость_Владимир 11.10.2004, 03:17
Надо в таблицу НДС заносить не буковками Y/N а числом, и жизнь станет легче и веселей.

Автор: x77 11.10.2004, 14:03
совершенно верно. 1.2 вместо 'Y' и 1.0 вместо 'N'. после этого запрос будет безо всяких юнионов, хранимок и пр., типа select SUM * NDS

Автор: Deniz 17.10.2004, 08:25
Неплохо бы версию сервера указать!
Для IB: до версии 7.5 только как указано выше
Для FB: есть спец. case
А вообще-то НДС надо числом хранить. разные ставки встречаются(10%, 18%, 20%, 16.67% + импортные материалы вообще по таможне сколько поставит)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)