【问题标题】:Update / concatenate a column value with another column value for same type of record with different id对于具有不同 ID 的相同类型的记录,更新/连接列值与另一列值
【发布时间】:2021-02-10 08:12:35
【问题描述】:
create table #test
(
    id int, 
    section char(2), 
    seq int, 
    caseID int, 
    Modal varchar(10), 
    value1 varchar(10), 
    value2 varchar(10), 
    CustName varchar(10), 
    donedate datetime
);

insert into #test 
values (1035, 'A1', 902, 408, 'Ind', 'firstTime', 'valtyp1', 'templerun', '2020-10-23')
insert into #test 
values (1035, 'A1', 903, 408, 'Ind', 'secondtime', 'valtyp2', 'templerun', '2020-10-23')
insert into #test 
values (3144, 'A1', 901, 801, 'Ind', NULL, 'valtyp1', 'templerun', '2020-10-23')

select * from #test

退货

+------+---------+-----+--------+-------+------------+---------+-----------+------------+
|  id  | section | seq | caseID | Modal |   value1   | value2  | CustName  |  donedate  |
+------+---------+-----+--------+-------+------------+---------+-----------+------------+
| 1035 | A1      | 902 |    408 | Ind   | firstTime  | valtyp1 | templerun | 10/23/2020 |
| 1035 | A1      | 903 |    408 | Ind   | secondtime | valtyp2 | templerun | 10/23/2020 |
| 3144 | A1      | 901 |    801 | Ind   |            | valtyp1 | templerun | 10/23/2020 |
+------+---------+-----+--------+-------+------------+---------+-----------+------------+

在这里,我尝试使用其他相同类型的行/记录来更新 Value1、value2 列。示例:

  • 在第一行:value1 = 'firstTime secondtime' & value2= 'valtyp1 valtyp2'
  • 在第二行:value1 = 'secondtime firstTime' & value2= 'valtyp2 valtyp1'

其中 'seq' 有不同的值。

谁能解释一下如何编写一个查询来连接/更新同一列的另一行。

【问题讨论】:

    标签: sql sql-server sql-server-2008 sql-server-2012


    【解决方案1】:

    只要您可以匹配 caseIDseq 上的行不同,您就可以使用 INNER JOIN 自行加入表,如下所示:

    UPDATE t1
    SET value1 = t1.value1 + ' ' + t2.value1,
        value2 = t1.value2 + ' ' + t2.value2
    FROM #test t1
    INNER JOIN #test t2 ON t1.caseID = t2.caseID
                       AND t1.seq <> t2.seq;
    

    请注意,这不会更新表格中的第三行。此外,如果您有超过 2 行与 caseID 匹配的值,则此解决方案会发生变化。

    【讨论】:

      猜你喜欢
      • 2015-02-15
      • 1970-01-01
      • 2019-05-15
      • 2011-09-18
      • 2021-10-18
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多