2016-10-29 2 views
0

Пожалуйста, простите меня, если это основной вопрос, я новичок в SQL и вам нужна помощь в выполнении вычислений даты из 2 таблиц в SQL.как выполнять расчеты даты из разных таблиц?

У меня есть две таблицы (пациента и CHD) они выглядят следующим образом:

Пациент:

ID|Age|date   |Alive 
-------------------------- 
1 50 01/09/2013  Y 
2 52 11/05/2015  N 
3 19 20/07/2016  N 

КБС:

ID|Age|indexdate   
    -------------------- 
    1 50 01/08/2012  
    2 52 11/11/2013  
    3 19 10/07/2015  

Таблица пациента содержит около 500000 с 2010-2016 гг., а таблица ИБС содержит около 350 000 записей с 2012-2013 гг. Что я хочу сделать, это посмотреть, сколько пациентов с ИБС умерло с 2012-2016 гг., И если они умерли, прошло 12 месяцев?

Я не знаю, как это сделать, но я знаю, что объединение необходимо на ID и мы устанавливаем где состояние с живыми, как НЕ

Окончательный выход «Y» должен выглядеть следующим образом на основе образец выше:

ID|Age|indexdate| deathdate 
--------------------------- 
2 52 11/11/2013 11/05/2015 
3 19 10/07/2016 20/07/2016 

Все вопросы дайте мне знать!

РЕДАКТИРОВАТЬ: только, чтобы прояснить ситуацию, пациенты могут появляться несколько раз на столе пациента, пока они не умрут.

Благодаря

ответ

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' 
+0

Могу ли я спросить, почему вы используете min (p.date)? каждый пациент умирает в разное время, поэтому не уверен, зачем нам нужно мин. Кроме того, мы не проверяем текущую дату, если прошло 1 год, нам нужно проверить, составляет ли разница между датой (таблица пациентов) и indexdate (таблица chd)> 1 год. Цените свою помощь! –

+0

@lo_iQ. , , Ваш вопрос неясно, могут ли пациенты появляться несколько раз в таблице. Мне кажется, что если у вас состояние пациента («живое», «не живое»), то у вас может быть несколько строк в таблице для данного пациента. –

+0

Да, они появляются несколько раз. Как только они умрут, они больше не появятся. –