gpt4 book ai didi

sql - MAX 后 COUNT 时出错?

转载 作者:行者123 更新时间:2023-11-29 01:00:22 25 4
gpt4 key购买 nike

我在医学数据库中有一个表 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 以及每个 act 修改的历史记录。 (索引是对 (IDAct,Historic))。所以我对最后修改的行为感兴趣:

SELECT A.IDActe, MAX(Historic) AS Historic FROM Act A GROUP BY IDAct

现在,我想对每位患者的行为进行编号。因此,我计算了一名患者 IDAct 小于或等于的行为数。我已经根据之前的请求创建了一个 View 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 个)。

您知道问题出在哪里吗?

最佳答案

SELECT A.IDActe,
MAX(Historic) AS Historic,
(SELECT COUNT(DISTINCT IDAct) FROM ACT B WHERE A.IDPatient=B.IDPatient)
FROM Act A
GROUP BY IDAct

?

关于sql - MAX 后 COUNT 时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3698837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com