首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过连接到满足某些条件的另一个表的最新记录来更新表

通过连接到满足某些条件的另一个表的最新记录来更新表
EN

Stack Overflow用户
提问于 2018-04-21 07:34:36
回答 1查看 191关注 0票数 2

我试图避免在这个解决方案中使用循环,而是使用基于集合的操作。

我需要根据最近出现的连接到另一个表的情况来更新表中的每条记录。我的第一个想法是在连接条件上连接到需要“最近的日期”from和group的表,但是使用带有UPDATEGROUP BY是无效的。

这是我到目前为止所掌握的。我有预感这个问题会通过CTE解决的。

CREATE TABLE Part (
    Area            VARCHAR(10) NOT NULL,
    SequenceNumber  INT         NOT NULL,
    DateAdded       DATETIME    NOT NULL
);
INSERT INTO Part VALUES
('A', 1, '2018-04-01'),
('A', 1, '2018-04-02'),
('A', 2, '2018-04-03'),
('A', 2, '2018-04-04'),
('B', 2, '2018-04-04'),
('B', 2, '2018-04-03'),
('B', 3, '2018-04-02'),
('B', 3, '2018-04-01');

DECLARE @Filters    TABLE
(
    Area            VARCHAR(10),
    StartingSeqNum  INT,
    StartTime       DATETIME 
);
INSERT INTO @Filters VALUES
('A', 2, NULL),
('B', 3, NULL);

-- Update each StartTime in @Filters with the most recent
-- DateAdded of the corresponding SequenceNumber in the Part table per Area.
UPDATE f
SET f.StartTime = MAX(p.DateAdded)
FROM
    @Filters f
    INNER JOIN Part p ON p.Area = f.Area
        AND p.SequenceNumber = f.StartingSeqNum
GROUP BY
    p.Area,
    p.SequenceNumber;

根据上面的示例数据,该操作应在@Filters中填充以下值

('A', 2, '2018-04-04')
('B', 3, '2018-04-02')
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49950941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档