将查询从一个文档更新到另一个 table 按行
Update Query from one document to another table Row wise
我有以下 tables:
[@FARMCOST] OIGE IGE1
----------- ------ -----------
u_farmname Docnum ItemName
u_blockcode DOCentry qty
u_cost U_FarmName Price
LineTotal
U_FarmName
U_blockcode
DOCentry
我有一个问题
UPDATE [dbo].[@FARMCOST]
SET u_cost = u_cost + (
SELECT b.LineTotal
FROM OIGE a
INNER JOIN IGE1 b ON a.DOCentry = b.docentry
)
WHERE u_farmname = (
SELECT a.U_FarmName
FROM OIGE a
INNER JOIN IGE1 b ON a.DOCentry = b.docentry
)
AND U_BlockCode = (
SELECT a.U_BlockCode
FROM IGE1 a
INNER JOIN IGE1 b ON a.DOCentry = b.docentry
WHERE
GROUP BY a.U_BlockCode
)
我有两个文档,一个是块成本;即[dbo].[@FARMCOST] @ 第二个是 Issue Doc 即 OIGE Master Table 和 IGE1 child table .
现在我想根据此处输入的代码更新块成本 Tableselected 块,即 IGE1.U_BlockCode。
上面的查询工作正常,它正在更新一行,即一个项目,但是当我 select 多行有不同的块时,我收到错误。
任何 Help/Idea 都将受到高度赞赏。
更新一个 table 中的一批条目从其他 table 中获取数据的一般语法是
UPDATE dst
SET col = whatever
FROM dst
JOIN src ON dst.columnName = src.columnName
当然你可以在这里使用table别名。
所以您的更新查询应该类似于:
UPDATE fc
SET u_cost = u_cost + grp.LineTotalSum
FROM [dbo].[@FARMCOST] AS fc
JOIN (
SELECT OIGE.U_FarmName, IGE1.U_blockCode, SUM(IGE1.LineTotal) AS LineTotalSum
FROM OIGE
JOIN IGE1 ON OIGE.U_FarmName = IGE1.U_FarmName
GROUP BY OIGE.U_FarmName, IGE1.U_blockCode
) as grp ON fc.u_FarmName = grp.U_FarmName AND fc.u_blockcode = grp.U_blockcode
注意 - 我正在根据您的问题做出最佳估计。如果有任何列名错误,或者我误解了外键,请在您的问题中更清楚地说明它们。
我有以下 tables:
[@FARMCOST] OIGE IGE1
----------- ------ -----------
u_farmname Docnum ItemName
u_blockcode DOCentry qty
u_cost U_FarmName Price
LineTotal
U_FarmName
U_blockcode
DOCentry
我有一个问题
UPDATE [dbo].[@FARMCOST]
SET u_cost = u_cost + (
SELECT b.LineTotal
FROM OIGE a
INNER JOIN IGE1 b ON a.DOCentry = b.docentry
)
WHERE u_farmname = (
SELECT a.U_FarmName
FROM OIGE a
INNER JOIN IGE1 b ON a.DOCentry = b.docentry
)
AND U_BlockCode = (
SELECT a.U_BlockCode
FROM IGE1 a
INNER JOIN IGE1 b ON a.DOCentry = b.docentry
WHERE
GROUP BY a.U_BlockCode
)
我有两个文档,一个是块成本;即[dbo].[@FARMCOST] @ 第二个是 Issue Doc 即 OIGE Master Table 和 IGE1 child table .
现在我想根据此处输入的代码更新块成本 Tableselected 块,即 IGE1.U_BlockCode。 上面的查询工作正常,它正在更新一行,即一个项目,但是当我 select 多行有不同的块时,我收到错误。
任何 Help/Idea 都将受到高度赞赏。
更新一个 table 中的一批条目从其他 table 中获取数据的一般语法是
UPDATE dst
SET col = whatever
FROM dst
JOIN src ON dst.columnName = src.columnName
当然你可以在这里使用table别名。
所以您的更新查询应该类似于:
UPDATE fc
SET u_cost = u_cost + grp.LineTotalSum
FROM [dbo].[@FARMCOST] AS fc
JOIN (
SELECT OIGE.U_FarmName, IGE1.U_blockCode, SUM(IGE1.LineTotal) AS LineTotalSum
FROM OIGE
JOIN IGE1 ON OIGE.U_FarmName = IGE1.U_FarmName
GROUP BY OIGE.U_FarmName, IGE1.U_blockCode
) as grp ON fc.u_FarmName = grp.U_FarmName AND fc.u_blockcode = grp.U_blockcode
注意 - 我正在根据您的问题做出最佳估计。如果有任何列名错误,或者我误解了外键,请在您的问题中更清楚地说明它们。