| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > СУБД, общие вопросы > 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 | ||
Добавлено @ 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% + импортные материалы вообще по таможне сколько поставит) |