2017-05-03 35 views
-1

調査患者の日付を含む表があります。1年の違いで同じテーブルの値を表示するにはどうすればよいですか?

select inspection_date from inspection 

患者の研究は、定期的にランダムに行われるのではない。 最初の研究+1年を通して患者に最も近い最初の研究と研究に関する情報を1行に表示したいとします。

+1

私はしますか?私は本当にそれを表示したいですか?もしそうなら、私はサンプルデータと望ましい結果から始めます。 –

+0

**あなたの質問を** [編集] **し、そのデータに基づいてサンプルデータと予想される出力を追加してください。 [**フォーマットされたテキスト**](http://stackoverflow.com/help/formatting)、** **スクリーンショットはありません**(http://meta.stackoverflow.com/questions/285551/why-may -i-not-upload-images-of-code-on-so-asking-a-question/285557#285557)。 ** [編集] **あなたの質問はコメントにコードや追加情報を投稿しません。 –

+0

どのDBMSを使用していますか? Postgres?オラクル? –

答えて

1
SELECT patient, firstStudy, 
     (SELECT TOP 1 inspection_date, 
        ABS(DATEDIFF(s,DATEADD(y,firstStudy,1),inspection_date)) AS diff FROM inspection 
     WHERE patient=myPatientsFirstStudy.patient 
     ORDER BY diff 
     ) AS studyClosestAfterYear 
FROM (SELECT patient, 
       (SELECT TOP 1 inspection_date FROM inspection 
       WHERE patient=myPatientsWithStudy.patient 
       ORDER BY inspection_date 
       ) AS firstStudy 
     FROM (SELECT DISTINCT patient FROM inspection 
      ) AS myPatientsWithStudy 
     ) AS myPatientsFirstStudy 
関連する問題