0

我将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 的代表)

亲属关系

4

1 回答 1

0

您正在谈论 Oracle 中的相关更新功能。但 SQL Server 并非如此。您需要对其进行简化并对特定表进行一些更新。

参考 :

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=60899

用另一张表的数据更新一张表

于 2014-10-01T02:40:28.910 回答