我将在SQL Server 2008中对查询结果执行UPDATE
,但似乎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
(我试图用名称为operator而不是null填充Expr3的代表)
Kinbds
答案 0 :(得分:0)
您正在谈论Oracle中的相关更新功能。但是,SQL Server的情况并非如此。您需要简化它并在特定表上进行一些更新。
参考: