【发布时间】:2016-10-08 14:04:08
【问题描述】:
我有一个代表患者体检的表格,它有检查的 ID 和患者 ID。
我想逐行遍历表格并获取每个患者 ID 并比较其不同的咨询,看看它是否被视为“新攻击”。我正在处理疟疾疾病,我们认为在过去 60 天内接受过咨询并且对测试呈阳性的每个患者都是老病例和new_attack = false,否则new_attack = true。
但是当我浏览表格时,我必须考虑到 palufalci 列,因为患者可以进行体检但对疟疾检测不呈阳性,在这种情况下为 new_attack = false。
创建表的代码如下:
CREATE TABLE public.tbl_diagnostiques_guy (
id integer NOT NULL DEFAULT nextval('tbl_diagnostiques_guy_id_seq'::regclass),
dateconsultation date,
numeropatient character varying(13),
palufalci boolean,
new_attack boolean
);
我用这个查询计算了每位患者两次体检之间的datediff:
SELECT id, numeropatient, palufalci,
dateconsultation, NextDate,
date(NextDate) - date(dateconsultation) as Diff, new_attack
FROM (
SELECT id, numeropatient, palufalci, dateconsultation, new_attack,
(SELECT MIN(dateconsultation)
FROM tbl_diagnostiques_guy T2
WHERE T2.numeropatient = T1.numeropatient
AND T2.dateconsultation > T1.dateconsultation
) AS NextDate
FROM tbl_diagnostiques_guy T1) AS T
WHERE NextDate IS NOT NULL AND (date(NextDate) - date(dateconsultation) < 60)
GROUP BY id, numeropatient, palufalci, dateconsultation, NextDate, new_attack
ORDER BY numeropatient DESC;
结果是: here
现在我想知道如何更新表格并获得我想要的结果。
【问题讨论】:
-
表
tbl_diagnostiques_guy是否有列palufalci或vivax?该查询似乎建议前者,但您的表定义具有后者。请编辑您的问题(请参阅问题标签下的链接),然后将输出的文本版本(导出到 PgAdminIII 中的文件)而不是图形链接。 -
您好,首先我要感谢您编辑我的帖子。这是palufalci,我编辑了这个问题。
-
你好阿纳斯,欢迎来到 SO。请看下面我的回答。祝你的数据库和研究好运,我自己患过两次疟疾,所以继续努力吧!
标签: postgresql cursor datediff