如果这是一个基本问题,请原谅我,我是SQL的初学者,需要一些帮助从SQL中的2个表执行日期计算。
我有两张桌子(病人和chd)他们看起来像这样:
病人:
ID|Age|date |Alive
--------------------------
1 50 01/09/2013 Y
2 52 11/05/2015 N
3 19 20/07/2016 N
CHD :
ID|Age|indexdate
--------------------
1 50 01/08/2012
2 52 11/11/2013
3 19 10/07/2015
患者表包含2010-2016的约500,000条记录,CHD表包含2012 - 2013年的约350,000条记录。我想做的是看看2012 - 2016年有多少冠心病患者死亡,如果他们已经死了12个月就过去了?
我不知道该怎么做但我知道ID上需要加入,我们将where条件设置为alive而不是'Y'
根据上面的示例,最终输出应如下所示:
ID|Age|indexdate| deathdate
---------------------------
2 52 11/11/2013 11/05/2015
3 19 10/07/2016 20/07/2016
有任何问题让我知道!
编辑:只是为了说清楚,患者可以在患者台上多次出现,直到他们死亡。
由于
答案 0 :(得分:0)
我假设此查询从patient
表中获取死亡日期:
select p.id, min(p.date) as deathdate
from patient p
where p.Alive = 'N'
group by p.id;
然后,您可以通过加入获得所需内容:
select count(*)
from chd c join
(select p.id, min(p.date) as deathdate
from patient p
where p.Alive = 'N'
group by p.id
) pd
on c.id = pd.id;
然后,您可以使用外部查询中的where
子句来解决您的问题。例如:
where deathdate >= current_date - interval '1 year'