根据另一个表中另一个列的内容更新表列

问题描述 投票:0回答:1

我有下面的表格(为简单起见,我仅显示其中一部分表格作为示例,而不是全部内容):

CREATE TABLE InstArtRel
(
    id INT IDENTITY(1, 1) NOT NULL,
    idIns INT,
    ExpDateRev DATE,
    codArticle NVARCHAR(4),

    PRIMARY KEY (id)
);

INSERT INTO InstArtRel (idIns, ExpDateRev, codArticle) 
VALUES (17400, datefromparts(2018, 10, 1), 'X509'),
       (17400, datefromparts(2020, 12, 2), 'X529'),
       (17400, datefromparts(2016, 9, 10), 'T579'),
       (17400, datefromparts(2017, 6, 7), 'Z669'),
       (10100, datefromparts(2019, 8, 17), 'TG09'),
       (10100, datefromparts(2018, 3, 28), 'TG09'),
       (10100, datefromparts(2018, 4, 24), 'TG09'),
       (10100, datefromparts(2016, 7, 12), 'TG09');        


CREATE TABLE Installations 
(
    idIns INT NOT NULL,
    DateIns DATETIME,

    PRIMARY KEY (idIns)
);       

INSERT INTO Installations (idIns, DateIns)
VALUES (17400, '2020-12-01'),
       (10100, '2022-05-07');    

对于表安装中的每个idIn,我需要根据以下假设,用DateIns表中的ExpDateRev列更新其InstArtRel列:

  • 如果codArticle表中IdIns的所有InstArtRel列值都相同,则将为DateInsInstallations表中的idIns列更新最大值[ C0]。

  • 否则,如果ExpDateRev表中的codArticle的所有IdIns列值都不相同,则将使用对应的InstArtRel更新表DateIns中的Installations列。 idIns的最小值。

[一个更好的例子...考虑到上述情况,在这种情况下,结果将是:

ExpDateRev
sql-server sql-update
1个回答
0
投票

idIns | DateIns ------+----------- 17400 | 2016-9-10 10100 | 2019-8-17 Aggregate会为您提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.