SQL noob 在这里苦苦查询......
我有两张表,一张包含产品信息(ItemCode、ItemName),一张包含每种产品的不同价目表(最多 10 个)。
用简单的英语来说,这就是我想要实现的目标:
Select T0.ItemCode, T0.ItemName, T1.Price
取价目表 6 的价格:如果价目表 6 中的价格为空,则取价目表 1 的价格并扣除 5%
看起来它应该相当直截了当,但我不确定从哪里开始说实话,我会很感激一些建议。
非常感谢,迈克尔
SQL noob 在这里苦苦查询......
我有两张表,一张包含产品信息(ItemCode、ItemName),一张包含每种产品的不同价目表(最多 10 个)。
用简单的英语来说,这就是我想要实现的目标:
Select T0.ItemCode, T0.ItemName, T1.Price
取价目表 6 的价格:如果价目表 6 中的价格为空,则取价目表 1 的价格并扣除 5%
看起来它应该相当直截了当,但我不确定从哪里开始说实话,我会很感激一些建议。
非常感谢,迈克尔
这是一种使用两个连接的方法,每个价目表一个:
select pi.ItemCode, pi.ItemName,
coalesce(pl6.price, pl1.price*0.95) as price
from ProductInformation pi left outer join
PriceList pl6
on pi.ItemCode = pl6.ItemCode and pi6.List = 6 left outer join
PriceList pl1
on pi.ItemCode = pl1.ItemCode and pi1.list = 1;
这假定价目表位于不同的行上。如果它们在同一行 ( price1
, price2
. . .),那么这将起作用:
select pi.ItemCode, pi.ItemName,
coalesce(pl.price6, pl.price1*0.95) as price
from ProductInformation pi left outer join
PriceList pl
on pi.ItemCode = pl.ItemCode;
您需要如下coalesce
所示的功能:
SELECT COALESCE(T1.PRICE,"MISSING") FROM [TABLE]
您可以在 RDBMS 的文档中找到有关它的更多信息,但如果该字段返回 NULL,这将返回“缺失”。