如何解决Oracle SQL - 基于 concat 的外连接
我需要交叉连接两个表,但连接条件是:
Select FutureInventory.Item,To_Number(Concat(Location,Channel_Id)) Location,From V_CUST_FUTURE_INV_POSITION FutureInventory,xx_Item_Loc_Info_V ItemLoc
Where FutureInventory.Item(+) = ItemLoc.Item
And To_Number(Concat(Location,Channel_Id))(+) = ItemLoc.Loc;
我想将列 To_Number(Concat(Location,Channel_Id)) 与 ItemLoc.Loc 外部连接 (+) 符号放在哪里
解决方法
首先,使用显式连接语法 - 旧的 (+)
难以阅读且容易出错。其次,使用 ||
运算符而不是 CONCAT
函数 - 同样,更易于阅读。所以我们最终得到
Select FutureInventory.Item,To_Number(Location || Channel_Id) Location,From xx_Item_Loc_Info_V ItemLoc
LEFT OUTER JOIN V_CUST_FUTURE_INV_POSITION FutureInventory,ON FutureInventory.Item = ItemLoc.Item And
To_Number(Location || Channel_Id) = ItemLoc.Loc
,
要在 Oracle 中进行外连接,您需要使用适当的 JOIN
类型——就像在所有其他数据库中一样。我认为你想要的逻辑是:
select FutureInventory.Item,To_Number(Concat(Location,Channel_Id)) as Location,from xx_Item_Loc_Info_V ItemLoc LEFT JOIN
V_CUST_FUTURE_INV_POSITION FutureInventory,on FutureInventory.Item = ItemLoc.Item AND
To_Number(Concat(Location,Channel_Id)) = ItemLoc.Loc;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。