我处在困境中,我必须从“患者”表的一行中获取一些值,然后将其插入到不同的表(“访问”)中,但每个值都作为不同的行。使用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 |
答案 0 :(得分:0)
我认为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
表。
答案 1 :(得分:0)
您可以使用APPLY
:
insert into visits (UniqueID, DateOfVist )
select UniqueID, dateofvisist
from patients t cross apply
( values (Jan), (Feb), . . ) t(dateofvisist)
where dateofvisist is not null;