0

を示すには、Visitsと呼ばれる:患者をグループ化して、私はテーブルを持っているのリピート訪問

ID(PKey,Int) 
PatiendID(int), 
DoctorID(int), 
ExpectedDate(date), 
ActualDate(date), 

は、どのように私は患者ごとにリピート訪問の数を返すクエリを書くことができます。

今回の訪問は、前回の訪問から半年以下であれば繰り返されると考えられます。

つまり、(最後の訪問から6ヶ月)と最後の訪問を除いた最後の訪問との間の訪問数を各患者が見つける必要があります。カーソルなしでクエリを書くことは可能ですか?

その他の質問私はテーブル患者を持っています ID(int, PKey),Name,Pasport,State ここから各クライアントが同じ情報を見つけることは可能ですか?または、以下のクエリと訪問先テーブルにないすべてのクライアントとのより良い組み合わせですか?私は、各 間の訪問の患者発見数(最後の訪問-6ヵ月)と最後の訪問を除く最後の訪問のために必要な言い換えれば

+0

http://pastebin.com/nKw0Wqvpは、ここではさらにいくつかの要件が必要です。最近の「繰り返し」の訪問、これまでの訪問、または「繰り返し」の訪問をしている患者のみが欲しいですか?訪問が「繰り返される」場合(6ヶ月以内)には、患者が3回訪問した場合、5ヶ月に1回訪問した回数、訪問した回数、その他の訪問数をカウントすることが許可されるべきですか?定期的に、2ヶ月に1回(無期限に過去に)訪問した患者はどうでしょうか?どのように数えるべきですか? –

+0

私は何度も訪問を繰り返し、原因が最近ではないことを知りたい。私は最後の訪問から6ヶ月以内に行われた訪問数を単純に数える必要があります。それは各患者のためです。ありがとう – seeker

答えて

2

WITH CTE AS 
(
    SELECT PatientID, MAX(ActualDate) AS LastVisit 
    FROM Visits 
    GROUP BY PatientID 
) 
SELECT CTE.PatientID, COUNT(1)-1 AS RepeatVisits 
FROM CTE INNER JOIN Visits ON CTE.PatientID = Visits.PatientID 
WHERE ActualDate BETWEEN DATEADD(month, -6, LastVisit) AND LastVisit 
GROUP BY CTE.PatientId 

この意志グループ、患者による、最後の訪問の前に6ヶ月ですべての訪問。 COUNT(合計)から1を引いたもの(最後の訪問を除く)が表示されます。

コンプリート例:第二部(患者テーブル)の場合http://pastebin.com/vpCdASpB

、こちらを参照してください。

WITH CTE AS 
(
    SELECT Patients.PatientID, Patients.Name, MAX(ActualDate) AS LastVisit 
    FROM Patients LEFT JOIN Visits ON #patient.PatientID = Visits.PatientID 
    GROUP BY Patients.PatientID, Patients.Name 
) 
SELECT CTE.PatientID, CTE.Name, COUNT(1)-1 AS RepeatVisits 
FROM CTE LEFT JOIN Visits ON CTE.PatientID = Visits.PatientID 
          AND Visits.ActualDate BETWEEN DATEADD(month, -6, LastVisit) AND LastVisit 
GROUP BY CTE.PatientId, CTE.Name 
ORDER BY PatientID; 
+0

+1非常にいいです。私は元の答えを削除しました。これは、要件のはるかに単純化された見方でした。 –

+0

2つの質問:私はすべての患者を表示する必要があります(0回の訪問でも)。さらに、ここでグループを使用する理由は? – seeker

+0

シーカー - 上記のクエリを試しましたか?私のテストでは、過去6ヶ月間に訪問していない患者でさえ、その患者にすべての患者がいることが示されています。また、GROUP BYはCOUNTを実行する機能を提供しています。詳しくはこちらをご覧ください:http://www.w3schools.com/sql/sql_groupby.asp – zimdanen

関連する問題