使用来自两个不同表的数据创建表

问题描述

我的要求是在多行中用个人ID,课程ID和日期填充表格。我有表1,其中行和课程的人员ID和日期为列。我的表2中的课程代码与表1中的列值相关。

表1

+----------+------------+------------+------------+------------+------------+------------+------------+
| PersonID |     C1     |     C2     |     C3     |     C4     |     C5     |     C6     |     C7     |
+----------+------------+------------+------------+------------+------------+------------+------------+
|     1780 | 3/05/2016  | 18/04/2016 | 6/12/2017  | 6/12/2018  | 14/12/2015 | 14/12/2015 | 18/04/2016 |
|     1781 | 17/01/2019 | 11/03/2019 | 9/05/2019  | 15/11/2019 | 15/11/2019 | 18/08/2017 | 11/03/2019 |
|     1898 | 19/08/2019 | 30/03/2020 | 19/08/2019 | 31/03/2020 | NULL       | 16/08/2019 | 31/03/2020 |
|     1899 | 23/09/2019 | 29/11/2019 | 8/05/2020  | 23/09/2019 | 18/12/2019 | 9/09/2019  | 9/09/2019  |
+----------+------------+------------+------------+------------+------------+------------+------------+

表2

+-----+--------+
| CID | COMPID |
+-----+--------+
| C1  |   1653 |
| C2  |   1151 |
| C3  |   1155 |
| C4  |   6724 |
| C5  |   4016 |
| C6  |   3220 |
| C7  |   1855 |
| C8  |   6757 |
| C9  |   7591 |
| C10 |   6910 |
+-----+--------+

目的是用人ID,课程ID和日期的多行填充表格。像下面这样。

输出表

+----------+--------+------------+
| PersonID | CompID |    Date    |
+----------+--------+------------+
|     1780 |   1653 | 3/05/2016  |
|     1780 |   1151 | 18/04/2016 |
|     1780 |   1155 | 6/12/2017  |
|     1780 |   6724 | 6/12/2018  |
|     1780 |   4016 | 14/12/2015 |
|     1780 |   3220 | 14/12/2015 |
|     1780 |   1855 | 18/04/2016 |
|     1781 |   1653 | 17/01/2019 |
|     1781 |   1152 | 11/03/2019 |
|     1781 |   1155 | 9/05/2019  |
|     1781 |   6724 | 15/11/2019 |
|     1781 |   4016 | 15/11/2019 |
|     1781 |   3220 | 18/08/2017 |
|     1781 |   1855 | 11/03/2019 |
+----------+--------+------------+

我不是SQL方面的专家。因此,寻求帮助。预先感谢!

更新:

谢谢大家的建议。我使用下面的代码来完成此工作。

SELECT PersonID,Compliance,b.COMPID,Date_
FROM  
   (SELECT PersonID,C1,c2,c3,c4,c5  ....Cn
   FROM Table1) p
UNPIVOT
   (Date_ FOR Compliance IN  
      ( C1,c5....Cn)
)AS unpvt
 join Table2 b on unpvt.Compliance = b.CID
GO

Sasi

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)