我将UPDATE
在 SQL Server 2008 中执行查询结果,但它似乎UPDATE
需要一个表名,这是不可能的。
我要这样做
UPDATE (SELECT ~)
set x = "1"
where x IS NULL
但实际上我在“VIEW”中遇到问题,无法在 SQL Server 2008 中执行此代码。
我的桌子:
CREATE TABLE [dbo].[Table_1]
(
[id] [int] NOT NULL,
[rep] [nchar](10) NOT NULL,
[qty] [int] NOT NULL,
[sell] [int] NOT NULL,
[settled] [bit] NULL
) ON [PRIMARY]
我的更新代码和里面的选择是:
update (
SELECT rep, Expr1, Expr2, Expr3, Expr4, Expr5
FROM (SELECT o.rep, o.Expr1, o.Expr2, p.rep AS Expr3, p.Expr1 AS Expr4, p.Expr2 AS Expr5
FROM (SELECT oo.rep, SUM(oo.qty) AS Expr1, SUM(oo.sell) AS Expr2
FROM dbo.Table_1 AS oo
WHERE (oo.settled = 1)
GROUP BY oo.rep) AS o FULL OUTER JOIN
(SELECT pp.rep, SUM(pp.qty) AS Expr1, SUM(pp.sell) AS Expr2
FROM dbo.Table_1 AS pp
WHERE (pp.settled = 0)
GROUP BY pp.rep) AS p ON o.rep = p.rep) AS derivedtbl_1
)
set rep = Expr4
where rep IS NULL
是否有任何机构可以帮助我找到它如何对查询结果执行更新?
我已经阅读了许多其他数据库的脚本,但 SQL Server 2008 与我认为的不同。
执行此代码的主要目的是填充“rep”中创建的空字段FULL OUTER JOIN
。如果有其他更简单的方法来填充字段而不是更新,我将不胜感激。这是我的想法。
谢谢你的时间 。
样品日期:
桌子 :
rep qty sell settled
------------------------------
a 10 20 true
b 20 40 true
c 10 20 False
a 11 22 False
结果是这样的:
rep Expr1 Expr2 Expr3 Expr4 Expr5
-----------------------------------------------------
a 10 20 a 11 22
b 20 40 null null null
null null null c 10 20
(我正在尝试用运算符名称而不是 null 填充 Expr3 的代表)
亲属关系