SQL Server INSERT INTO специальный - PullRequest
0 голосов
/ 29 июня 2018

У меня есть проблема, за которую я был бы очень признателен за вашу помощь.

У меня есть 4 таблицы:

  • PatientList с столбцами HISID varchar (64), LastName varchar (64), FirstName varchar (64), MiddleName varchar (64) и LastVisit datetime
  • ABP со столбцами HISID, LastName, FirstName, MiddleName и ScanDateTime
  • Холтер со столбцами HISID, LastName, FirstName, MiddleName и ScanDateTime
  • Отдыхает со столбцами HISID, LastName, FirstName, MiddleName и ScanDateTime

Мне нужно заполнить таблицу PatientList DISTINCT HISID из таблиц ABP, Holter и Resting, а также LastName, FirstName и MiddleName и более новыми ScanDateandTime в LastVisit столбец.

Например:

ABP таблица имеет

ID001, Doe, John, William, 2018-06-01 15:00
ID001, Doe, John, William, 2018-06-05 12:00
ID002, Parson, Rob, Michael, 2018-05-03 11:35
ID002, Parson, Rob, Michael, 2018-04-20 19:30

Отдыхает стол имеет

ID001, Doe, John, William, 2018-04-01 11:11
ID003, Andersen, Pamela, Erwin, 2018-06-20 20:00

Холтер стол имеет

ID002, Parson, Rob, Michael, 2018-05-30 11:00
ID001, Doe, John, William, 2018-06-28 12:45
ID003, Andersen, Pamela, Erwin, 2017-12-15 08:00

Полученная таблица PatientList должна быть отсортирована по LastVisit DESC:

ID001, Doe, John, William, 2018-06-28 12:45
ID003, Andersen, Pamela, Erwin, 2018-06-20 20:00
ID002, Parson, Rob, Michael, 2018-05-30 11:00

Любая помощь будет высоко оценена.

Спасибо

1 Ответ

0 голосов
/ 29 июня 2018
WITH
    a AS (
        SELECT ID, Last, First, Middle, Date FROM Holter
        UNION
        SELECT ID, Last, First, Middle, Date FROM ABP
        UNION
        SELECT ID, Last, First, Middle, Date FROM Resting
    ) ,
    b AS (
        SELECT ID, Last, First, Middle, Date,
               ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Date DESC) AS RowNumber
        FROM   a
    )
INSERT  Patient
SELECT  ID, Last, First, Middle, Date
FROM    b
WHERE   RowNumber = 1;
...