我正在为每月销售制作一个存储过程。在存储过程中,我们有一个折扣。可以从三个不同的表中获取此折扣。如果折扣不在 id.rabatt 中,则应从 dp.rabatt 获取,如果不存在,则应从 ds.rabatt 获取。所以前两个可以是空的,而最后一个总是有折扣的。
我在设计程序的 WHEN 部分时遇到了很大的麻烦。如果你有时间,请看一下并在路上帮助我:
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 的原因是,在每个 Discount 表中,我还有两个不同的折扣,一个永久有效(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'
其他两个表的设计方式类似。