我们有一张包含所有产品的表格。这里有一个名为UNITMEASURE的列。此列填充了诸如" EA,PR,PK,YD等的值"。偶尔会有1填充到此列中。我想运行一个更新语句来将1改为其他值。
例如:
PRODUCT UNITMEASURE
1234 1
1234 1
1234 PR
1234 1
1234 1
4321 1
4321 1
4321 EA
4321 1
4321 1
我希望能够通过一个查询将所有PRODUCT 1234系列的PRIT和PRODUCT 4321的UNITMEASURE更新为EA(从1开始),但我完全难以接受。这可能会发生超过8,000种产品,因此我想查找UNITMEASURE<> ' 1'并从每个产品的更新。
答案 0 :(得分:0)
尝试这种方式:
update producttable
set UNITMEASURE = case WHEN PRODUCT = 1234
THEN = 'PR'
WHEN PRODUCT = 4321
THEN = 'EA'
ELSE = UNITMEASURE
END
更新问题
update producttable
set UNITMEASURE = PT2.UNITMEASURE
from producttable PT
join (select UNITMEASURE, PRODUCT
from producttable
UNITMEASURE <> 1) PT2
on PT.PRODUCT = PT2.PRODUCT
where PT.UNITMEASURE = 1
答案 1 :(得分:0)
尝试这种方式:
update yourtable
set UNITMEASURE = (case when PRODUCT=1234 then 'PR'
when PRODUCT=4321 then 'EA'
else UNITMEASURE
end)
where UNITMEASURE <> 1
答案 2 :(得分:0)
以下查询不会影响具有UNITMEASURE&lt;&gt;的其他记录&#39; 1&#39;
这取决于您的架构。如果您有1500个产品,则它必须位于某个主表中且具有一些UNITMEASURE值。你可以编写子查询来获得它。
update yourtable
set UNITMEASURE = (case when PRODUCT=1234 then 'PR'
when PRODUCT=4321 then 'EA'
else UNITMEASURE
end)
where UNITMEASURE <> 1
答案 3 :(得分:0)
似乎其他答案仅涵盖了您示例中的场景。这是一个更通用的查询:
UPDATE yourtable
SET unitmeasure = n.unitmeasure
FROM yourtable y
INNER JOIN yourtable n ON n.product = y.product
WHERE y.unitmeasure = '1'
AND n.unitmeasure <> '1'