首页 > 解决方案 > 将“Patients”表的行中的不同值作为不同的条目插入“visits”表

问题描述

我处于困境,我必须从患者表的一行中获取一些值并将它们插入到不同的表(访问)中,但每个表都作为不同的行。使用 SQL 有没有办法做到这一点?

患者表:

| Jan       | Feb        |   March    | Apr  |  May      | June     |UniqueID|
| NULL      | 2018-02-01 | 2019-03-01 | NULL |2018-05-01 |  NULL    | 1      |
| 2019-01-01| 2019-02-01 | NULL       | NULL | NULL      |2018-06-01| 2      |

预期访问表:

|   UniqueID        |   DateOfVist   |
|   1               |   2018-02-01   |
|   1               |   2019-03-01   | 
|   1               |   2018-05-01   |
|   2               |   2018-06-01   |  
|   2               |   2019-01-01   |
|   2               |   2019-02-01   |

标签: sqlsql-server

解决方案


我认为cross apply几乎可以满足您的要求:

select t.uniqueid, v.dateofvisit
from t cross apply
     (values (jan), (feb), (mar), (apr), (may), (jun)
     ) v(dateofvisit)
where v.dateofvisit is not null;

您可以添加insert into visits (uniqueid, dateofvisit)into visits(分别)加载或创建visits表。


推荐阅读