Вставка различных значений из строки из таблицы «Пациенты» в таблицу «посещения» в качестве разных записей - PullRequest
1 голос
/ 15 апреля 2019

Я нахожусь в затруднительном положении, когда мне нужно взять некоторые значения из одной строки из таблицы пациента и вставить их в другую таблицу (посещения), но каждое в отдельную строку. Есть ли способ сделать это при использовании 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   |

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Вы можете использовать APPLY:

insert into visits (UniqueID, DateOfVist   )
    select UniqueID, dateofvisist
    from patients t cross apply
         ( values (Jan), (Feb), . .  ) t(dateofvisist)
    where dateofvisist is not null;
0 голосов
/ 15 апреля 2019

Я думаю 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...