0

出会いの患者日をリストした表があります。以下は1回の遭遇のサンプルです。患者が入院している毎日、真夜中から退院まで 1 つのレコードが作成されます。

Enc_iD  Day_Id      ServiceDtTm        AdmitDate
2616350 34707672    2/21/2013 23:59    21/FEB/13 12:19:00
2616350 34733898    2/22/2013 23:59    21/FEB/13 12:19:00
2616350 34748155    2/23/2013 23:59    21/FEB/13 12:19:00
2616350 34760403    2/24/2013 23:59    21/FEB/13 12:19:00
2616350 34784357    2/25/2013 23:59    21/FEB/13 12:19:00
2616350 34808228    2/26/2013 23:59    21/FEB/13 12:19:00
2616350 34814512    2/27/2013 10:10    21/FEB/13 12:19:00

別のテーブルでは、すべての出会いのステータスがユーザーによって不規則に維持されます。

Enc_iD  TransDtTm       Status
2616350 2/21/2013 12:20 
2616350 2/21/2013 13:29 1
2616350 2/22/2013 7:28  3
2616350 2/25/2013 13:44 2
2616350 2/27/2013 10:10 2

以下のようにSQLで結果セットを作成したいと思います。そのため、一番上のテーブルの毎日について、その時点で最新だったステータスが表示されServiceDtTmます。

Enc_iD  Day_Id      DtTime             AdmitDate            Status
2616350 34707672    2/21/2013 23:59    21/FEB/13 12:19:00   1
2616350 34733898    2/22/2013 23:59    21/FEB/13 12:19:00   3
2616350 34748155    2/23/2013 23:59    21/FEB/13 12:19:00   3
2616350 34760403    2/24/2013 23:59    21/FEB/13 12:19:00   3
2616350 34784357    2/25/2013 23:59    21/FEB/13 12:19:00   2
2616350 34808228    2/26/2013 23:59    21/FEB/13 12:19:00   2
2616350 34814512    2/27/2013 10:10    21/FEB/13 12:19:00   2

どんな助けでも大歓迎です。これをSQLで理解できません。近似一致で vlookup を使用して Excel でのみ。

ロバート

4

1 に答える 1

1

最も簡単な解決策は相関サブクエリだと思います。SQL Server の構文は次のとおりです。

select pd.*,
       (select top  1  status
        from status s 
        where s.enc_id = pd.enc_id and s.transdttm <= pd.servicedttm
        order by s.transdttm
       ) as MostRecentStatus
from patientdays pd

他のほとんどのデータベースでは、次のようになります。

select pd.*,
       (select status
        from status s 
        where s.enc_id = pd.enc_id and s.transdttm <= pd.servicedttm
        order by s.transdttm
        limit 1
       ) as MostRecentStatus
from patientdays pd
于 2013-02-28T18:42:43.343 に答える