使用来自另一个表的结果进行SQL更新
我想用以下查询更新表products上的qty字段。 此查询将在“数量”字段中返回所需的数字使用来自另一个表的结果进行SQL更新,sql,sql-server,Sql,Sql Server,我想用以下查询更新表products上的qty字段。 此查询将在“数量”字段中返回所需的数字 SELECT e.Prod_name, e.Prod_number, (SUM(e.Qty) - SUM(g.Qty)) Qty FROM Products_Invoices e JOIN ( SELECT product_number, SUM(qty) Qty FROM SoldItemsCalc GROUP BY product_number ) g ON e.Pr
SELECT e.Prod_name, e.Prod_number,
(SUM(e.Qty) - SUM(g.Qty)) Qty
FROM Products_Invoices e JOIN (
SELECT product_number, SUM(qty) Qty
FROM SoldItemsCalc
GROUP BY product_number
) g ON e.Prod_number = g.product_number
GROUP BY Prod_number, Prod_name
order by Prod_name
如何使用此查询并更新产品编号匹配的值
我不介意你改变这个问题。。。只需要更新数量值
谢谢我这样做:
with toupdate as (
SELECT e.Prod_name, e.Prod_number, (SUM(e.Qty) - SUM(g.Qty)) Qty
FROM Products_Invoices e JOIN (
SELECT product_number, SUM(qty) Qty
FROM SoldItemsCalc
GROUP BY product_number
) g ON e.Prod_number = g.product_number
GROUP BY Prod_number, Prod_name
)
update t
set qty = toupdate.qty
from toupdate
where t.prod_nubmer = toupdate.prod_number
你确定你的数量能产生你想要的结果吗?您在子查询中进行求和,然后在外部查询中进行另一个求和。这可能会把你的数字弄乱。这里是@Gordon的好答案的一个细微变化——这是使用我认为您想要的数量更新产品表:
with toupdate as (
SELECT e.Prod_name, e.Prod_number, (SUM(e.Qty) - g.Qty) Qty
FROM Products_Invoices e JOIN (
SELECT product_number, SUM(qty) Qty
FROM SoldItemsCalc
GROUP BY product_number
) g ON e.Prod_number = g.product_number
GROUP BY Prod_number, Prod_name, g.Qty
)
update p
set qty = t.qty
from products p join toupdate t on p.prod_number = t.prod_number;
下面是一个例子:
产品发票表中有2条记录,总计150。SoldItemCalc表中有2条记录,总计25条。使用您的查询,当我想象您想要125时,总体结果将更改为100
顺便说一句——使用上述CTE将适用于SQLServer2005及更高版本。如果需要支持SQL Server 2000,请使用以下版本:
update p
set qty = t.qty
from products p join (
SELECT e.Prod_name, e.Prod_number, (SUM(e.Qty) - g.Qty) Qty
FROM Products_Invoices e JOIN (
SELECT product_number, SUM(qty) Qty
FROM SoldItemsCalc
GROUP BY product_number
) g ON e.Prod_number = g.product_number
GROUP BY Prod_number, Prod_name, g.Qty) t on p.prod_number = t.prod_number;
我也得到了与你的查询相同的结果。。。我仔细检查了我的结果,结果似乎很好。。。感谢you@Barlet好吧,但要小心——看看这把小提琴,了解我的意思:——祝你好运@Barlet——基本上,如果Products\u Invoices表中有多条记录具有相同的prod\u编号,那么SoldItemCalc表的总和将是错误的(另一个表中记录数的乘数)。如果您的查询返回您想要的内容,则无需担心--只是想让您知道:)