繁体   English   中英

用同一表中不同条件的同一列的其他值更新一个表的值

[英]Update value of one table with other values of same column with different condition in same table

有人可以帮忙吗?

我有不同的值表2 SiteID ,我想一个替代sited id与另一个在同一table.I值想要的值时, site id =158与当值site id =56

结果1: Site id =158

Dt           C-Id  M-Id    Values
01/03/2014  14354   6   25504.3047
01/03/2014  15266   6   25504.3047
01/03/2014  14354   10  25504.3047
01/03/2014  14354   15  25504.3047
01/03/2014  15266   15  25504.3047
01/03/2014  14354   16  25504.3047

结果2: Site id = 56

Dt          C-Id   M-Id Values
01/03/2014  14354   6   11915
01/03/2014  15266   6   536
01/03/2014  14354   10  1517
01/03/2014  14354   15  3662
01/03/2014  15266   15  1071
01/03/2014  14354   16  3662

我写了这个查询:

UPDATE [WorkDb].[dbo].[M_values]
SET [value] = (
        SELECT O.[value]
        FROM [WorkDb].[dbo].[M_values] AS O
        WHERE O.siteid IN (56)
            AND O.DATE = '2014-03-01'
            AND O.C - Id IN (14354, 15266)
            AND O.M - Id IN (6, 10, 15, 16, 25, 55, 56, 18)
            AND ISNULL(O.value, 0) <> 0
        )
WHERE (
        siteid IN (158)
        AND DATE = '2014-03-01'
        AND C - Id IN (14354,15266)
        AND M - Id IN (6,10,15,16,25,55,56,18)
        AND ISNULL(value, 0) <> 0
        )

该查询返回错误:

Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.

问题是您没有按照正确的标准加入以获得单个记录。

UPDATE mv
SET [value] = site56.[value]
FROM [WorkDb].[dbo].[M_values] mv
INNER JOIN (
    SELECT O.[value],O.[date],O.[C-Id],O.[M-Id]
    FROM [WorkDb].[dbo].[M_values] as O
    WHERE O.siteid IN (56)
    and ISNULL(O.value,0)<>0
) site56 ON site56.[date]=mv.[date] AND site56.[C-Id]=mv.[C-Id] AND site56.[M-Id]=mv.[M-Id]
WHERE (
    mv.siteid IN (158)
    AND mv.[date] = '2014-03-01'
    and mv.[C-Id] IN (14354,15266)
    and mv.[M-Id] IN (6,10,15,16,25,55,56,18)
    and ISNULL(mv.[value],0)<>0
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM