Patient
-------
PatientID
Visit
-----
VisitID
PatientID
HeartRate
VisitDate
如何選擇全部誰擁有一遊,他們第一訪問的日期,並在他們的心臟率患者第一次訪問?查詢幫助的LINQ到SQL過多最近
Patient
-------
PatientID
Visit
-----
VisitID
PatientID
HeartRate
VisitDate
如何選擇全部誰擁有一遊,他們第一訪問的日期,並在他們的心臟率患者第一次訪問?查詢幫助的LINQ到SQL過多最近
SELECT
p.PatientID,
v.VisitID,
v.HeartRate,
v.VisitDate
FROM
Patient p
INNER JOIN Visit v ON p.PatientID = v.PatientID
WHERE
v.VisitDate = (
SELECT MIN(VisitDate)
FROM Visit
WHERE PatientId = p.PatientId
)
編輯:另類版本。一樣。 (不太明顯,因此不太理想恕我直言)
SELECT
p.PatientID,
v.VisitID,
v.HeartRate,
v.VisitDate
FROM
Patient p
INNER JOIN Visit v ON p.PatientID = v.PatientID
INNER JOIN (
SELECT PatientID, MIN(VisitDate) VisitDate
FROM Visit
GROUP BY PatientID
) f ON f.PatientID = p.PatientID AND f.VisitDate = v.VisitDate
SELECT TOP(1) PatientID, VisitDate, HeartRate FROM Visit ORDER BY VisitDate ASC
病人只有PatientID?不是一個名字或類似的東西?
我只發佈患者的相關專欄。無論如何,我需要第一次訪問:< – Shawn 2009-01-27 15:38:24
然後它會是這樣的。 – 2009-01-27 15:42:17
難道他不想讓所有的就診患者? – 2009-01-27 15:43:40
這是你想要的嗎? 當然,因爲在Patient中沒有額外的字段,所以這裏並不是真正必要的。但我猜IRL有。
select PatientId, HeartRate, VisitDate from Patient p
left join Visit v on p.PatientID = v.PatientId
最後的查詢
declare @practiceID int
select
isnull(sum(isResponder),0) as [Responders],
isnull(count(*) - sum(isResponder),0) as [NonResponders]
from (
select
v.patientID
,firstVisit.hbLevel as startHb
,maxHbVisit.hblevel as maxHb
, case when (maxHbVisit.hblevel - firstVisit.hbLevel >= 1) then 1 else 0 end as isResponder
from patient p
inner join visit v on v.patientid = v.patientid
inner join practice on practice.practiceid = p.practiceid
inner join (
SELECT
p.PatientID
,v.VisitID
,v.hblevel
,v.VisitDate
FROM Patient p
INNER JOIN Visit v ON p.PatientID = v.PatientID
WHERE
v.VisitDate = (
SELECT MIN(VisitDate)
FROM Visit
WHERE PatientId = p.PatientId
)
) firstVisit on firstVisit.patientID = v.patientID
inner join (
select
p.patientID
,max(v.hbLevel) as hblevel
from Patient p
INNER JOIN Visit v ON p.PatientID = v.PatientID
group by
p.patientID
) MaxHbVisit on maxHbVisit.patientid = v.patientId
where
p.practiceID = isnull(@practiceID, p.practiceID)
group by
v.patientID
,firstVisit.hbLevel
,maxHbVisit.hblevel
having
datediff(
d,
dateadd(
day
,-DatePart(
dw
,min(v.visitDate)
) + 1
,min(v.visitDate)
)
, max(v.visitDate)
) >= (7 * 8)
) responders
我想有一個病人和訪問之間一對多的關係? – Nicolai 2009-01-27 15:37:54