【发布时间】:2016-11-22 13:06:28
【问题描述】:
我正在尝试根据其他列的值获取列 fpo 的值。结果与查询中的CASE 语句不符。有人能给我指明一个好的方向吗?
SELECT SL.[Document No_], SL.[Sell-to Customer No_], SL.Type, SL.[Line No_], ISNULL(PO.No_, 'BUY') AS RPO,
CASE
WHEN PO.[Replan Ref_ No_] is null AND PO.[No_] IS NOT NULL THEN 'Neplanificata'
WHEN PO.[Replan Ref_ No_] IS NULL AND PO.[No_] = 'Buy' THEN 'Buy'
ELSE PO.[Replan Ref_ No_]
END AS fpo
FROM [SC Vermorel SRL$Sales Line] AS SL
INNER JOIN [SC Vermorel SRL$Sales Header] AS SH ON SL.[Document No_] = SH.No_
INNER JOIN [SC Vermorel SRL$Customer] AS Cust ON SL.[Sell-to Customer No_] = Cust.No_
LEFT OUTER JOIN [SC Vermorel SRL$Production Order] AS PO
ON (SH.[External Document No_] = PO.[Old Prod_ Order No_]) AND (PO.[Source No_] = SL.No_) AND (SL.Quantity = PO.Quantity)
结果:
【问题讨论】:
-
你在哪里定义你的变量?据我所知,您不能在 SELECT 语句中进行更新。
-
您是在尝试持续更新表,还是只需要在
NULL的情况下使用默认值?SELECT读取到,SET想要更改一个值。为此,您需要UPDATE。请描述您的需求。 -
在某些条件下只需要默认值。抱歉,我没有正确指定。我更新了主要问题。
标签: sql sql-server select set case