Я делаю хранимую процедуру для ежемесячных продаж. В хранимой процедуре у нас есть Discount. Эту скидку можно получить из трех разных таблиц. Если скидки нет в id.rabatt, она должна быть получена с dp.rabatt, если ее нет, она должна быть получена с ds.rabatt. Так что первые два могут быть пустыми, а последний всегда со скидкой.
У меня большие проблемы с разработкой части КОГДА процедуры. Пожалуйста, посмотрите и помогите мне в пути, если у вас есть время:
CASE (
when
Isnull(id.rabatt, Isnull(u.rabatt, id.rabatt)) then..
when
Isnull(dp.rabatt, Isnull(x.rabatt, dp.rabatt)) then..
when
Isnull(ds.rabatt, Isnull(y.rabatt, ds.rabatt)) then..
end)
AS 'Discount',
Причина, по которой я должен использовать Isnull, заключается в том, что внутри каждой таблицы скидок у меня также есть две разные скидки, одна из которых действует вечно (2999), а другая имеет выбранный период. Как я показываю здесь:
LEFT OUTER JOIN discount AS id
ON id.identifiers = isa.identifiers
AND id.store = BV.name
AND id.from_date <= isa.sales_date
AND id.to_date >= isa.sales_date
AND id.to_date < '2999-01-01'
LEFT OUTER JOIN discount AS u
ON u.identifiers = isa.identifiers
AND u.to_date = '2999-01-01'
Две другие таблицы устроены аналогичным образом.