0

SQL noob 在这里苦苦查询......

我有两张表,一张包含产品信息(ItemCode、ItemName),一张包含每种产品的不同价目表(最多 10 个)。

用简单的英语来说,这就是我想要实现的目标:

Select T0.ItemCode, T0.ItemName, T1.Price

取价目表 6 的价格:如果价目表 6 中的价格为空,则取价目表 1 的价格并扣除 5%

看起来它应该相当直截了当,但我不确定从哪里开始说实话,我会很感激一些建议。

非常感谢,迈克尔

4

2 回答 2

1

这是一种使用两个连接的方法,每个价目表一个:

 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;
于 2013-06-19T11:00:52.623 回答
0

您需要如下coalesce所示的功能:

SELECT COALESCE(T1.PRICE,"MISSING") FROM [TABLE]

您可以在 RDBMS 的文档中找到有关它的更多信息,但如果该字段返回 NULL,这将返回“缺失”。

于 2013-06-19T10:58:57.043 回答