这是我当前的查询
SELECT O.SubStatus,
OM.ORDERID AS ReorderID,
FROM [dbo].[Orders] O (NOLOCK)
LEFT JOIN OShipped OM (NOLOCK) ON O.OrderID = OM.POrderID
我想根据OM.PorderID或ROrderID的值填充ReOrderID。如果OM.POrderID具有值,则将其填充为ReOrderID,如果ROrderID具有值[来自不同的表],则填充该值。表MOrder和RPOrder中的这两列是互斥的。
答案 0 :(得分:0)
我不确定列的位置,但这应该有效:
UPDATE OShipped SET
ReOrderID= coalesce(OM.POrderID,ROrderID ,0)
FROM
OShipped OM
INNER JOIN
[dbo].[Orders] O
ON
O.OrderID = OM.POrderID
答案 1 :(得分:0)
主要是COALESCE
功能。在这个示例中,我假装您提到的“其他表”名为OTHERTABLE
,并且它已连接到名为SomeKey
的列上的主要订单表。
我也在解释你的问题意味着(通过“填充”)你希望你所谈论的价值反映在SELECT
语句的输出中,而不是你想修改实际桌子就位。 (如果你想要后者,那么Benjamin Moskovits的回答会更有帮助。)
SELECT
O.SubStatus,
COALESCE(OM.ORDERID,OTHERTABLE.ROrderID) AS ReorderID,
FROM [dbo].[Orders] O (NOLOCK)
LEFT JOIN OShipped OM (NOLOCK)
ON O.OrderID = OM.POrderID
LEFT JOIN OTHERTABLE (NOLOCK)
ON O.OrderID = OTHERTABLE.SomeKey