Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

SQL-запрос для IB   Найти похожие ветки 

 
Li   (2004-08-05 00:36) [0]

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


 
GanibalLector ©   (2004-08-05 01:41) [1]

select id,(sum_*1.2) from lom where nds="y" ;
select id,sum_ from lom where nds="n" ;
и наконец UNION для обьединения

кстати,поле sum лучше измени.Это слово зарезервировано


 
GanibalLector ©   (2004-08-05 01:55) [2]

select id,(sum_*1.2) from lom where nds="y"
union all
select id,(sum_*1) from lom where nds="n"  order by 1;


 
Rule ©   (2004-08-05 09:30) [3]

для облегчения можно сделать так:

select id,("sum"*1.2) from lom where nds="y"
union
select id,"sum" from lom where nds="n"


 
Johnmen ©   (2004-08-05 09:32) [4]

>Rule ©   (05.08.04 09:30) [3]

"Это вряд ли." (c)


 
Rule ©   (2004-08-05 10:10) [5]

Johnmen ©   (05.08.04 9:32) [4]
Почему, у меня работает, я сомневаюсь что интербейз в этом плане сильно отличается от фаерберда


 
Johnmen ©   (2004-08-05 10:18) [6]

>Rule ©   (05.08.04 10:10) [5]

Потому, что у тебя 3 диалект.


 
Rule ©   (2004-08-05 10:19) [7]

Johnmen ©   (05.08.04 9:32) [4]

Небольшое дополненние:

select id,cast("SUM"*1.2 as Float) from lom where nds="y"
union
select id,"SUM" from lom where nds="n"

Вот так точно будет работать только надо следить чтобы регистр в названии поля "SUM"  был правильный иначе не получится, несмотря даже на то что слово зарезервировано, будет работать обязательно


 
Rule ©   (2004-08-05 10:20) [8]

Johnmen ©   (05.08.04 10:18) [6]
Ограничени в третем диалекте на двойные скобочки введены для значения полей а не для передачи названия поля, не веришь можешь проверить ...


 
Johnmen ©   (2004-08-05 10:23) [9]

>Rule ©   (05.08.04 10:20) [8]
>можешь проверить ...

Что проверить ?


 
Соловьев ©   (2004-08-05 10:25) [10]


>  диалекте на двойные скобочки введены для значения полей
>

двойные кавычки для того чтобы можно было вводить названия полей разного регистра


 
Rule ©   (2004-08-05 10:28) [11]

Rule ©   (05.08.04 10:20) [8]
НУ проверить что работает запрос приведенный в [7], если возникают подозрения указанные в [4]

Соловьев ©   (05.08.04 10:25) [10]
И не только, как представлено выше можно использовать в качестве названия полей зарезервированые слова (если разработчику базы так уж приспичило)


 
Johnmen ©   (2004-08-05 10:30) [12]

>Rule ©   (05.08.04 10:28) [11]

Так я и не спорю. Работает. В 3 диале. А существует ещё и 1. :)


 
Rule ©   (2004-08-05 10:34) [13]

Johnmen ©   (05.08.04 10:30) [12]
А-а-а, вы про это, я уже обижатся начал, а разве есть целесообразность использовать первый диалект, может просветите меня (не учитывая конечно вариант с поддержкой существующей базы), а то лично мне не понятно зачем использовать первый диалект ...


 
Danilka ©   (2004-08-05 10:35) [14]

НДС сейчас не 20, а 18%. А бывает еще и 10%.
И вообще, лучше НДС хранить в отдельном поле, дабы не отгрести проблем с округлениями.
:))


 
Li   (2004-08-05 10:48) [15]

по поводу Sum это понятно, просто для примера такое название.
можно ли запрос БЕЗ union сделать? такие уж требования :( ...


 
Johnmen ©   (2004-08-05 10:51) [16]

>Rule ©   (05.08.04 10:34) [13]
>...зачем использовать первый диалект ...

Также можно спросить "Зачем использовать 3 диалект?"
В общем это философский вопрос. И обсуждать его можно долго и нудно. А не охота... В смысле, желания нет...:)


 
Danilka ©   (2004-08-05 10:52) [17]


> можно ли запрос БЕЗ union сделать?

в FB можно через CASE, в ИБ - незнаю можно или нет, но точно можно через хранимую процедуру.


 
Johnmen ©   (2004-08-05 10:54) [18]

>Li  

1. Чем юнион не угодил ?
2. Может пора уже указать имя и версию сервера ?


 
Rule ©   (2004-08-05 11:15) [19]

Li   (05.08.04 10:48) [15]

Не понял, это как, в техзадании написано чтоб юнион не использвать или как?
чегто не понятно, огласите ваши требования и ися и версию сервера, если у вас есть желани чтоб мы вам помогли



Страницы: 1 вся ветка

Текущий архив: 2004.08.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.023 c
14-1091778547
Knight
2004-08-06 11:49
2004.08.29
Помехи на экране монитора...


11-1080025101
user
2004-03-23 09:58
2004.08.29
Вызов 2го модального из 1го модального окна - почему??


14-1092061346
ИМХО
2004-08-09 18:22
2004.08.29
Корейко


11-1079974942
Delphi5.01
2004-03-22 20:02
2004.08.29
_NewControl (Aparent, MyControl ,?????,true,?????)


6-1086863457
Kraj
2004-06-10 14:30
2004.08.29
Socket