2017-08-16 23 views
-3

私はSQL上で作業しており、SQLで構築する必要のあるシナリオを見つけました。以下 シナリオである:SQLの累積数

PatientID AdmitDate   DischargeDate 
12  7/24/2017 09:45 7/24/2017 11:01 
13  7/21/2016 08:37 7/22/2017 00:15 

Iは以下のように設定結果たい:patientID 13について

enter image description here

  • 、カウントは最初の2行で計算さpatientid 12
  • され、カウント最後の行で計算されます。
+3

どのRDBMSを使用していますか?複数のタイプで動作する回答を具体的に探している場合を除き、タグを修正してください。 – Bridge

+0

患者は一度にしか存在できませんか? – Whencesoever

+1

まだこれについて何か書き込もうとしましたか?もしそうなら、それを示してください。 SQLを使用して希望する出力レイアウトを直接取得することはできないことに注意してください。あなたはおそらくあなたのUI層でそれを行う必要があります。示された出力では、どの患者がどのレコードをどのように見ることができますか?それははっきりしていません。それとも無関係でしょうか?例えば患者の時間が1時間オーバーラップしている場合、その時間に2人の患者が治療されているため、その時間に「2」が表示されると思われますか?再びそれは明らかではない。私はこの権利を得るために、より良いサンプルデータが必要だと思っています – ADyson

答えて

-1

あなたの行動は遅いですね。私は集計表を使うと思います。通常のn年分の日/曜日/曜日などを格納するのではなく、テーブルにはその日の1時間ごとに1つのレコードが含まれます。主キーは、これらのセグメントの1つを表します。

次に、患者の入院日と退院日を、患者がいる時間のリストまたは範囲を返す関数に渡すことができます。したがって、患者13は戻り値(たとえば)1500,1517を得ることができます(つまり、患者は17時間あり、1500が日付と時刻を示すレコードの主キーになるため、日付と時刻を知ることになります)。彼が入院した日の時間)。患者12は1544,1546の値を返します

次に、日付Aから日付Bまでのデータセットを、集計テーブルからそれらの日付間のすべてのデータを返し、特定の患者にとっては、「はい」または「いいえ」です。

データの表示 - 希望の結果セット - 私は別の場所で行います。私はおそらく2つのデータセットを返します。 1つは、あなたのテーブル構造を構築するために使用されます。もう1つは、ボックスに「1」を入れるかどうかを決めるために使用されます。あなたはその場であなたの合計を行うことができます。

これは、同じ日付の患者さんにとっては面白いと思いますが、あなたは別々に各患者を見せなければなりませんか?