2016-10-28 7 views
0

нужна помощь в выполнении вычислений SQL-дат:Расчеты по дате SQL

В таблице у меня есть пациенты старше 18 лет и умерли от определенного заболевания (таблица a). В другой таблице у меня есть пациенты с одним и тем же заболеванием и самая ранняя дата их диагноза с этим заболеванием (таблица b).

Что мне нужно знать, если прошло 12 месяцев с тех пор, как они были диагностированы и когда они умерли.

Может ли кто-нибудь помочь мне выполнить расчет этой даты.

Столбец в таблице a для даты - индексный столбец, а столбец - дата смерти в таблице b, когда они умерли.

Цените любая помощь

Таблица A:

patientid--age--deathdate 
1   20 11/05/2016 
2   19 10/09/2015 

Таблица B:

PatientID--indexdate 
1   01/02/2015 
2   08/03/2014 

Поэтому в основном все, что я хочу, чтобы проверить, если 12 месяцев прошло между indexdate и deathdate.

+0

Im не уверен, что вы хотите .. можете ли вы отправить сообщение, как ваши таблицы выглядят? – Sk1X1

+0

Не могли бы вы предоставить определения таблиц и примерный запрос - вероятно, неполный --- который указывает, что вы хотели бы получить. Для одного пациента? За одно заболевание? Как выявляются диагнозы? Etc и т. Д. –

+0

повторяется: http://stackoverflow.com/questions/17833176/postgresql-days-months-years-between-two-dates – McNets

ответ

0

Это дает список пациентов, которым 12 месяцев прошло с момента их диагноза и когда они умерли.

SELECT A.patientID, A.patientName 

FROM tableA A 
INNER JOIN 
(
SELECT patientID , MIN(DiagnoseDate) As EarliestDate 
FROM tableB 
GROUP BY patientID 
) As B 

ON A.patientID = B.patientID 
WHERE date_part('month',age(EarliestDate, DeathDate)) >=12 
+0

Отдайте это. так как он говорит> = 12, я полагаю, что он также даст результаты для тех, кто умер более 12 месяцев назад? – timz

+0

нет, это дает список пациентов, чья дата их смерти и ранняя диагностированная разница в дате составляет 12 месяцев –

+0

, а что, если я хочу 12 месяцев и более? – timz

-1

Вы должны быть в состоянии сделать это, написав запрос, соединяющий 2 таблицы с помощью идентификатора пациента, а затем с помощью DATEADD функции в выражении WHERE, которое было бы что-то вроде этого примера:

WHERE TableA.deathdate> (DATEADD (месяц, 12, TableB.indexdate))

+0

Нет «dateadd()' in Postgres –

+0

А - Я даже не заметил, что это был постгресс - просто увидел SQL. – Webbo

+0

.. но та же логика должна работать с эквивалентом postgress http://stackoverflow.com/questions/27080505/dateadd-equivalent-in-postgresql – Webbo

Смежные вопросы