将列插入每个ID的行

时间:2016-08-30 19:46:44

标签: sql sql-server

我有两张桌子:

表1:

    ID       name 
---------  -----------
    1         john
    2         salma
    3         tony

表2:

    ID         Tasks      amount
---------  -----------  ----------
    1         write         2
    1         memorize      3
    1         read          6
    1         sing         NULL
    2         write         1
    2         memorize     NULL
    2         read          5
    2         sing         NULL
    3         write        NULL
    3         memorize      8
    3         read          2
    3         sing         NULL

我想在table1中为table2中提到的每个任务插入新列。

表1:

    ID        name       write    memorize    read    sing
---------  ----------- --------  ---------  ------- --------
    1         john        2          3         6      NULL
    2         salma       1         NULL       5      NULL
    3         tony       NULL        8         2      NULL

我可以一次在表1中插入一个ID,但不是全部。提前谢谢!

1 个答案:

答案 0 :(得分:1)

首先,我使用pivot

将行值作为列插入临时表中
 select * into #Results 
        from
        (
          select ID,Tasks,amount
          from #Table2

        ) tb2
    pivot
    (
      max(amount)
      for ID in ([1], [2], [3])
    ) as piv

然后,我用Table1做了inner join

select * from Table1 tb1 inner join #Results r on r.ID =tb1.ID

感谢@JamesL让seggustion使用pivot