问题描述
我的要求是在多行中用个人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 (将#修改为@)