SQL - 使用另一个表中的单个行更新行

昏昏欲睡的猎鹰

尝试将数据插入到每个适当的行中,并从名为 #Test 的 Table1 到名为 #BlueTable 的 Table2 中匹配 ID 和 DayNumber

我正在处理这个

CREATE TABLE #Test (
            ID int,
            DayNumber  nvarchar(1), 
            MNumber nvarchar(2),
            QLetter nvarchar(1),
            Comments    nvarchar(60)
        )

insert into #Test(ID,DayNumber,MNumber,QLetter,Comments) 
  values(55,'1','2','A','000000'),
    (55,'5','2','A','111111'),
    (66,'7','2','A','222222'),
    (66,'7','2','B','333333')

  CREATE TABLE #BlueTable (
            ID nvarchar(40),
            DayNumber  nvarchar(1),
            BL_MN   nvarchar(2),
            BL_QL   nvarchar(1),
            BL_CM   nvarchar(60),
            BL_MN2  nvarchar(2),
            BL_QL2  nvarchar(1),
            BL_CM2  nvarchar(60)
        )

 declare @i int=1

while (@i <=7)
begin
   insert into #BlueTable(ID,DayNumber) 
  values(55,@i),
     (66,@i)

   set @i=@i+1
end

declare @loop int=1,
    @loopWord nvarchar(MAX)=''

   while(@loop<=2)-- HOW UPDATE IS RAN
  begin
       exec('update #BlueTable set BL_MN'+@loopWord+'=#Test.MNumber,BL_QL'+@loopWord+'=#Test.QLetter,BL_CM'+@loopWord+'=#Test.Comments from #Test
 where #BlueTable.ID=#Test.ID and #BlueTable.DayNumber = #Test.DayNumber')

    set @loop =@loop+1
    set @loopWord=@loop
 end


select * from #Test
select * from #BlueTable order by ID
drop table #Test
drop table #BlueTable

我期待至少有一些空值,但它似乎覆盖了以前的更新并填充了新数据。这就是我更新它的方式

使用时,我一直试图获得的输出应如下所示(select * from #BlueTable where BL_CM is not null order by ID):我想要的

ID  | DayNumber | BL_MN | BL_QL |    BL_CM     | BL_MN2 | BL_QL2 | BL_CM2 |
55       1          2       A       000000        null     null     null
55       5          2       A       111111        null     null     null
66       7          2       A       222222         2        B      333333

相反,我得到的东西是这样的:我得到了什么

 ID  | DayNumber | BL_MN | BL_QL |    BL_CM     | BL_MN2 | BL_QL2 | BL_CM2 |
 55      1          2        A        000000        2         A     000000
 55      5          2        A        111111        2         A     111111
 66      7          2        A        222222        2         A     222222

请帮忙 :(

乌兹

看看这个查询。我建议你先得到你想要的结果。然后插入第二个表。

insert into #BlueTable
select
    ID, DayNumber, max(case when rn = 1 then MNumber end)
    , max(case when rn = 1 then QLetter end)
    , max(case when rn = 1 then Comments end)
    , max(case when rn = 2 then MNumber end)
    , max(case when rn = 2 then QLetter end)
    , max(case when rn = 2 then Comments end)
from (
    select
        *, rn = row_number() over (partition by ID, DayNumber order by MNumber, QLetter)
    from 
        #Test
) t
group by ID, DayNumber

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用SQL SELECT基于另一个表中的特定行查询表

来自分类Dev

根据来自另一个表的信息更新同一SQL表中的行-MSSQL

来自分类Dev

SQL - 需要根据其行与另一个表的关系数更新表中的值

来自分类Dev

将行从1个表复制到SQL中的另一个表

来自分类Dev

如何使用 SQL TRIGGER 将另一个表中的行插入到新表中?

来自分类Dev

SQL Server 触发器将更新的行复制到另一个历史表中

来自分类Dev

SQL根据另一个表中的搜索结果在表中查找行

来自分类Dev

来自另一个表的 SQL COUNT 行

来自分类Dev

计算同一查询中另一个SQL表中的行

来自分类Dev

如何在SQL中查找与另一个表匹配的表的行组?

来自分类Dev

根据另一个表中值之间的差异删除SQL表中的行

来自分类Dev

每天使用另一个表中的值更新sql表

来自分类Dev

使用来自另一个表的信息更新SQL Server中的表

来自分类Dev

SQL更新表使用另一个数据库中的表

来自分类Dev

在一个表中查找不在另一个表中的行-SQL Server查询

来自分类Dev

T-SQL仅使用变量中的值而不是一列将行的副本从一个表插入到另一个表

来自分类Dev

如何在SQL Server中将一个表中的特定行加到另一个表

来自分类Dev

将一个表中的行集合连接到另一个表的列 - SQL Server

来自分类Dev

我从另一个表的时间戳中获取最新行的SQL查询

来自分类Dev

SQL,检查行是否在另一个表中

来自分类Dev

SQL获取未在另一个表中显示的行

来自分类Dev

sql显示另一个表中缺少的重复行

来自分类Dev

SQL 根据另一个表中的行数隐藏/显示行

来自分类Dev

SQL - 根据另一个表中的行数删除行

来自分类Dev

新手 SQL:如何获取*不*包含在另一个表中的行?

来自分类Dev

SQL:选择与另一个表中的内容匹配的所有行

来自分类Dev

SQL使用where包含根据另一个表的内容返回行

来自分类Dev

在另一个表中使用 fk 删除 sql 行

来自分类Dev

将数据行从C#中的另一个sql表插入到sql表中

Related 相关文章

  1. 1

    如何使用SQL SELECT基于另一个表中的特定行查询表

  2. 2

    根据来自另一个表的信息更新同一SQL表中的行-MSSQL

  3. 3

    SQL - 需要根据其行与另一个表的关系数更新表中的值

  4. 4

    将行从1个表复制到SQL中的另一个表

  5. 5

    如何使用 SQL TRIGGER 将另一个表中的行插入到新表中?

  6. 6

    SQL Server 触发器将更新的行复制到另一个历史表中

  7. 7

    SQL根据另一个表中的搜索结果在表中查找行

  8. 8

    来自另一个表的 SQL COUNT 行

  9. 9

    计算同一查询中另一个SQL表中的行

  10. 10

    如何在SQL中查找与另一个表匹配的表的行组?

  11. 11

    根据另一个表中值之间的差异删除SQL表中的行

  12. 12

    每天使用另一个表中的值更新sql表

  13. 13

    使用来自另一个表的信息更新SQL Server中的表

  14. 14

    SQL更新表使用另一个数据库中的表

  15. 15

    在一个表中查找不在另一个表中的行-SQL Server查询

  16. 16

    T-SQL仅使用变量中的值而不是一列将行的副本从一个表插入到另一个表

  17. 17

    如何在SQL Server中将一个表中的特定行加到另一个表

  18. 18

    将一个表中的行集合连接到另一个表的列 - SQL Server

  19. 19

    我从另一个表的时间戳中获取最新行的SQL查询

  20. 20

    SQL,检查行是否在另一个表中

  21. 21

    SQL获取未在另一个表中显示的行

  22. 22

    sql显示另一个表中缺少的重复行

  23. 23

    SQL 根据另一个表中的行数隐藏/显示行

  24. 24

    SQL - 根据另一个表中的行数删除行

  25. 25

    新手 SQL:如何获取*不*包含在另一个表中的行?

  26. 26

    SQL:选择与另一个表中的内容匹配的所有行

  27. 27

    SQL使用where包含根据另一个表的内容返回行

  28. 28

    在另一个表中使用 fk 删除 sql 行

  29. 29

    将数据行从C#中的另一个sql表插入到sql表中

热门标签

归档