Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите создать запрос

377
21 октября 2003 года
nosferatu
86 / / 17.12.2002
Есть запрос:
select con.contract_headref head,
con.contract_number conum,
bo.bo_number bonum,
bo.bo_docdate bodate,
kfsr.budgetcodes_code kfsr_key,
kcsr.budgetcodes_code kcsr_key,
kvr.budgetcodes_code kvr_key,
kesr.budgetcodes_code kesr_key,
kvsr.budgetcodes_code kvsr_key,
uecon.budgetcodes_code uecon_key,
ufunc.budgetcodes_code ufunc_key,
comp.companies_fullname compname,
csQ1.contractstages_paymentsum Q1,
csQ2.contractstages_paymentsum Q2,
csQ3.contractstages_paymentsum Q3,
csQ4.contractstages_paymentsum Q4

from contract con
left join bo on (bo.bo_key = con.bo_key)
left join budgetcodes kfsr on (kfsr.budgetcodes_key = con.kfsr_key)
left join budgetcodes kcsr on (kcsr.budgetcodes_key = con.kcsr_key)
left join budgetcodes kvr on (kvr.budgetcodes_key = con.kvr_key)
left join budgetcodes kesr on (kesr.budgetcodes_key = con.kesr_key)
left join budgetcodes kvsr on (kvsr.budgetcodes_key = con.kvsr_key)
left join budgetcodes uecon on (uecon.budgetcodes_key = con.usereconcode_key)
left join budgetcodes ufunc on (ufunc.budgetcodes_key = con.userfunccode_key)
left join companies comp on (comp.companies_key = con.consumer_key)
left join contractstages csQ1 on (bo.bo_key = csQ1.contract_key
and csQ1.contractstages_paymentdate < "01.04.2003")
left join contractstages csQ2 on (bo.bo_key = csQ2.contract_key
and csQ2.contractstages_paymentdate < "01.07.2003")
left join contractstages csQ3 on (bo.bo_key = csQ3.contract_key
and csQ3.contractstages_paymentdate < "01.10.2003")
left join contractstages csQ4 on (bo.bo_key = csQ4.contract_key
and csQ4.contractstages_paymentdate >= "01.10.2003")

where con.contract_iscomplex = 0
and csQ1.rpl_key < 3
and csQ2.rpl_key < 3
and csQ3.rpl_key < 3
and csQ4.rpl_key < 3
and bo.bo_number is not null
group by con.contract_headref,
con.contract_number,
bo.bo_number,
bo.bo_docdate,
kfsr.budgetcodes_code,
kcsr.budgetcodes_code,
kvr.budgetcodes_code,
kesr.budgetcodes_code,
kvsr.budgetcodes_code,
uecon.budgetcodes_code,
ufunc.budgetcodes_code,
comp.companies_fullname,
csQ1.contractstages_paymentsum,
csQ2.contractstages_paymentsum,
csQ3.contractstages_paymentsum,
csQ4.contractstages_paymentsum
order by 12
//*********************************
Вот. Вопрос следующий. Например в таблице CONTRACTSTAGES нет значений для Q1, соответствующих Q2,Q3,Q4. Запрос выводит дублирующиеся строки и какие-то левые суммы. Как проверить есть ли значение в таблице, если нет, то поставить 0, а если есть вывести его в результаты запрса???
3.1K
21 октября 2003 года
man
38 / / 17.10.2003
Ну ты блин загнул! А что за система то? в оракле - это делалось уже не помню как, но если надо посмотрю.. кажется использовалось ключевое слово производное от HAVING. В стандартном sql такого if else вроде бы нет...
265
21 октября 2003 года
Gauss
975 / / 20.02.2000
в MS SQL используется функция COALESCE() синтаксис COALESCE(expression1, expression2)
возвращает значение expression2 когда находит значение NULL в expression1 или expression1 когда не NULL
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог