按顺序分组,但找到 SELECT 语法



一个选择SQL,其中包含一个包含降序排序和内部连接的子查询,以链接到saem id (patid(。完成此排序子查询后,我将使其成为另一个不起作用的SQL使用的视图查询。将 WINSQL 与缓存数据库一起使用。

这个想法是按降序对data_of_assessment排序

SELECT c1.patid, c1.date_of_assessment, c1.form_status_value
FROM cw_cans_assessment c1 
INNER JOIN (
SELECT * from cw_cans_assessment c2
ORDER BY c2.data_of_assessement DESC) 
ON c1.patid = c2.patid
GROUP BY c1.patid

错误信息:

[%msg: <( 预期,标识符(顺序(找到^选择 c1 . 帕蒂德 , C1 . date_

示例数据:

patid   date_of_assessment  form_status_value
64050   2009-06-25          Unknown
53297   2011-12-07          Unknown
42308   2016-06-16          Initial
9540757 2016-09-22          Initial
45144   2017-06-23          Reassessment
50529   2017-09-01          Initial
38557   2017-10-17          Initial
52754   2017-10-20          Initial
50123   2017-11-07          Initial
15572   2017-11-14          Initial

大概,你想要的是每个patid的最新评估:

select ca.*
from cw_cans_assessment ca
where ca.date_of_assessment = (select max(ca2.date_of_assessment)
from cw_cans_assessment ca2
where ca2.patid = ca.patid
);
SELECT c1.patid, c1.date_of_assessment, c1.form_status_value
FROM cw_cans_assessment c1
GROUP BY c1.patid
ORDER BY c1.date_of_assessment

我高估了问题解决方案,永远不应该在同一张桌子上使用内部连接,结果证明这是更简单的解决方案。

最新更新