我在我们的EHR/EMR数据库的SQL上运行查询。我主要看护士在每次患者邂逅/拜访期间完成的评估,并希望返回最近评估日期的答案以及其他一些信息。我创建了查询,并且所有数据都将完成,但是,它将返回所有评估日期和答案,而不仅仅是最新的日期和答案。我将附上下面的完整代码。在SQL查询中选择最近或最近日期
SELECT DISTINCT
MAX(PTA.ASSESSMENT_DATE) AS Max_Date,
SAQ.QUESTION_TEXT, SAA.ANSWER_TEXT, dbo.PT_BASIC.PATIENT_CODE,
dbo.PT_BASIC.NAME_FULL
FROM
dbo.PTC_ASSESSMENT_ANSWER AS PAA
INNER JOIN
dbo.PTC_ASSESSMENT AS PTA ON PTA.ASSESSMENT_ID = PAA.ASSESSMENT_ID
AND PTA.PATIENT_ID = PAA.PATIENT_ID
INNER JOIN
dbo.SYS_ASSESSMENT_POINTER AS SAP ON SAP.POINTER_ID = PAA.POINTER_ID
INNER JOIN
dbo.SYS_ASSESSMENT_QUESTION AS SAQ ON SAQ.QUESTION_ID = SAP.QUESTION_ID
INNER JOIN
dbo.SYS_ASSESSMENT_ANSWER AS SAA ON SAA.ANSWER_ID = SAP.ANSWER_ID
INNER JOIN
dbo.PT_BASIC ON PTA.PATIENT_ID = dbo.PT_BASIC.PATIENT_ID
WHERE
(PTA.ASSESSMENT_DATE BETWEEN CONVERT(DATETIME, '2017-09-05 00:00:00', 102)
AND CONVERT(DATETIME, '2017-10-12 00:00:00', 102))
GROUP BY
dbo.PT_BASIC.PATIENT_CODE, dbo.PT_BASIC.NAME_FULL, SAQ.QUESTION_TEXT,
SAA.ANSWER_TEXT
HAVING
(SAA.ANSWER_TEXT LIKE '%LEVEL % -%')
电流输出将与此类似:
2017年9月5日患者ABC正确答案为
2017年9月6日患者ABC ANSWER2
2017年9月7日患者ABC ANSWER3
9 /二千○一十七分之六患者XYZ Answer4
我所期待的是:
2017年9月7日患者ABC ANSWER3
2017年9月6日PA TIENT XYZ回答4
可能出现[检索数据库中每个组的最后一条记录 - SQL Server 2005/2008](https:// stackoverflow.com/questions/4751913/retrieving-last-record-in-each-group-from-database-sql-server-2005-2008) –
交叉应用而不是内部联接。 – xQbert
什么RDBMS和版本?以及PTC_Assessments对答案的分布是什么?每个答案都有很多评估吗?或者只是少数,分布会随着时间而改变? – xQbert