Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 условие  [new]
aksuz
Member

Откуда: Vladivostok
Сообщений: 33
вот запрос:

select substring(od_accounts0.straccount, 1,5),sum(saldo*com_rates_cb.rate_nu ) 
from od_accounts0,od_saltrn0,com_rates_cb 
where od_accounts0.id_currency = com_rates_cb.id_currency 
and when com_rates_cb.id_currency =810 then saldo*1


насколько я понимаю нельзя исползовать IF и WHEN послеwhere
как тогда мне добавить такое условие не используя case?
p.s. SQL тока начал изучать - поэтому пожалуйста подробней отвечайте.
заранее спасибо
19 июл 12, 10:10    [12886838]     Ответить | Цитировать Сообщить модератору
 Re: условие  [new]
antbr
Member

Откуда:
Сообщений: 75
aksuz,

case
19 июл 12, 10:15    [12886855]     Ответить | Цитировать Сообщить модератору
 Re: условие  [new]
aksuz
Member

Откуда: Vladivostok
Сообщений: 33
мне сказали не использовать case
19 июл 12, 10:18    [12886882]     Ответить | Цитировать Сообщить модератору
 Re: условие  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
aksuz
мне сказали не использовать case


Какие-то прямо садисты-надомники Вам задачи ставят.
Что ожидается от этого условия?

where od_accounts0.id_currency = com_rates_cb.id_currency 
and when com_rates_cb.id_currency =810 then saldo*1
19 июл 12, 10:27    [12886933]     Ответить | Цитировать Сообщить модератору
 Re: условие  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
aksuz,
aksuz,

...and when com_rates_cb.id_currency =810 then saldo*1

сие не логическое условие.
Да и про синтаксис надо почитать и не придумывать свой
19 июл 12, 10:29    [12886943]     Ответить | Цитировать Сообщить модератору
 Re: условие  [new]
aksuz
Member

Откуда: Vladivostok
Сообщений: 33
ну у меня есть таблица saldo с остатком на балансе, но остаток и в валюте и в рублях, запрос должен суммировать баланс по первым пяти цифрам счета. я не могу суммуировать валюту с рублями поэтому я в сумме умножаю валюту на курс sum(saldo*com_rates_cb.rate_nu ). узнаю что за валюта из таблицы столбца id_curency, но в ней нет информации о рубля поэтому все рублевые счета вылетают из запроса. поэтому мне нужно написать условие на рубли.
19 июл 12, 10:41    [12887012]     Ответить | Цитировать Сообщить модератору
 Re: условие  [new]
aksuz
Member

Откуда: Vladivostok
Сообщений: 33
собсвенно все это задание лишь для того что бы научить меня писать запросы и синтаксису....
19 июл 12, 10:50    [12887064]     Ответить | Цитировать Сообщить модератору
 Re: условие  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3059
у Вас ошибки в запросе
1. не связаны таблицы счетов и остатков на балансе, что ведет к неправильному результату однозначно (получается cross join)
в условии пишите как они соостветсвуют (а лучше, для наглядности замените на Inner Join)
2. используйте LEft Join для привязки com_rates_cb, что позволит счетам с рублями попасть в выборку, а в вычислении суммы напишите
sum(saldo*IsNull(com_rates_cb.rate_nu, 1) )
19 июл 12, 11:07    [12887172]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить