【发布时间】:2010-09-13 08:33:17
【问题描述】:
我在医学数据库中有一个表格 Act:
IDAct Historic IDPatient
1 2001-01-01 1
1 2001-01-02 1
2 2001-01-01 2
3 2001-01-03 1
我想计算 IDActPerPatient 列:
IDAct Historic IDPatient IDActPerPatient
1 2001-01-02 1 1
2 2001-01-01 2 1
3 2001-01-03 1 2
Act 表包含 Acts 以及每一次修改的历史。 (索引是对 (IDAct,Historic))。 所以我对最后修改的行为感兴趣:
SELECT A.IDActe, MAX(Historic) AS Historic FROM Act A GROUP BY IDAct
现在,我想为每位患者的使徒行传编号。因此,我计算了一名患者的 IDAct 小于或等于的行为数。 我已经使用上一个请求创建了一个视图 LastAct,我尝试了这个:
SELECT DA1.*, COUNT(*) AS IDActPerPatient
FROM LastAct DA1
INNER JOIN LastAct DA2 ON DA1.IDPatient = DA2.IDPatient
AND DA2.IDActe >= DA1.IDAct
GROUP BY DA1.IDAct
...这不起作用! 当一个行为在历史上有多个版本时,我会在 IDActPerPatient 中获得大量数据(对于在 3 个版本中有 1 个行为的患者,我有 81 个)。
你知道问题出在哪里吗?
【问题讨论】: