Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.037 c
14-1091905865
Dot
2004-08-07 23:11
2004.08.29
SoftIce


3-1091612556
сергей1
2004-08-04 13:42
2004.08.29
изменение текста в dbGrid


1-1092503692
Gnec
2004-08-14 21:14
2004.08.29
Как заставить эдит понимать числа


14-1092235321
Лерик
2004-08-11 18:42
2004.08.29
Delphi


3-1091592599
ydv
2004-08-04 08:09
2004.08.29
Хитрый sql-запрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский