我有一个简单的sql语句,该语句连接了一些表以获取有关容器中各项的一些元数据。我的问题是tableTwo现在有一个替换productid的字段(我们称它为masterProductId)(如果已填充),因此我们想在该列上代替该行加入one.productid。如果未使用masterProductId,则通常将其留空,但不为null。我不确定如何在一个语句中处理潜在的不同联接。这是语句的基本内容,没有尝试添加masterProductId
select distinct one.code from tableOne one
inner join tableTwo two on two.productid = one.productid
inner join tableThree three on three.itemguid = two.itemguid
where three.wrhscontrid = @containerId
and one.statecode = ''
答案 0 :(得分:1)
所以让我重申一下:
这是解决方案:
join tableTwo two
on case when masterProductKey!=''
then masterProductKey
else two.productid end = one.ProductID
答案 1 :(得分:0)
inner join tableTwo two on coalesce(two.masterproductid, two.productid) = one.productid