一尘不染

SQL Server-从同一表中的数据更新列

sql

我有一个看起来像这样的表:

SetId      ID       Premium
2012        5          Y
2012        6          Y
2013        5          N
2013        6          N

我想使用setid等于2012的溢价值更新2013记录。

因此查询后,它看起来像这样:

SetId      ID       Premium
2012        5          Y
2012        6          Y
2013        5          Y
2013        6          Y

任何帮助,不胜感激


阅读 198

收藏
2021-03-17

共1个答案

一尘不染

目前尚不清楚您要使用哪个2012年值来更新哪个2013年值,我假设值ID应该相同。

使用表变量的完整示例,您可以在Management Studio中进行测试。

DECLARE @Tbl TABLE (
    SetId INT,
    Id INT, 
    Premium VARCHAR(1)
)

INSERT INTO @Tbl VALUES (2012, 5, 'Y')
INSERT INTO @Tbl VALUES (2012, 6, 'Y')
INSERT INTO @Tbl VALUES (2013, 5, 'N')
INSERT INTO @Tbl VALUES (2013, 6, 'N')

--Before Update
SELECT * FROM @Tbl

--Something like this is what you need
UPDATE t 
SET t.Premium = t2.Premium 
FROM @Tbl t 
INNER JOIN @Tbl t2 ON t.Id = t2.Id 
WHERE t2.SetId = 2012 AND t.SetId = 2013

--After Update    
SELECT * FROM @Tbl
2021-03-17