我以前写过这个函数,但我似乎无法记住它并且它没有进入版本控制。现在,更多与睡眠剥夺相关的事情,我不记得如何重建它。
这是个主意。我有两个表,“regPrice”和“custPrice”,共享密钥“itemID”。它们都有一个“价格”列,而custPrice也有另一个关键的“acct”,这样如果custPrice中存在价格,它应该返回那个价格。如果没有custPrice条目,则应返回regPrice。
伪代码:
if(select custPrice where acct = passedAcct and itemID = passedItemID) {
return custPrice;
else
return regPrice;
任何帮助都将不胜感激。
答案 0 :(得分:6)
SELECT COALESCE(c.price, r.price) AS price
FROM regPrice r LEFT OUTER JOIN custPrice c
ON (r.itemID = c.itemID AND c.acct = ?)
WHERE r.itemID = ?;
答案 1 :(得分:2)
select r.itemID, r.Acct,
case when c.price is null then r.price else c.price end as price
from regPrice r
left outer join custPrice c
on r.itemID = c.itemID
and r.Acct = @passedAcct
where r.itemID = @passedItemID
答案 2 :(得分:1)
查看COALESCE函数,除非你没有使用NULL,在这种情况下你会想要使用CASE。