я пытаюсь соединить следующие две таблицы:Присоединяйтесь таблицы в результате только одну строку
Table Patient | Table incident
patient.id patient.birthdate | incident.patientid serviceid
1 1/1/2000 | 1 8
2 1/1/1990 | 1 8
3 1/1/2005 | 2 10
4 1/1/1980 | 3 11
5 1/1/2000 | 3 11
6 1/1/1990 | 3 11
7 1/1/1980 | 6 23
8 1/1/2000 | 7 8
для того, чтобы возрастную Разделения всех пациентов, сгруппированных по их ServiceID.
SELECT serviceid,
SUM(CASE WHEN FLOOR((CAST (GetDate() AS INTEGER) - CAST(patient.birthdate AS INTEGER)) /365.25) BETWEEN 0 AND 15 THEN 1 ELSE 0 END) AS [Under 15],
SUM(CASE WHEN FLOOR((CAST (GetDate() AS INTEGER) - CAST(patient.birthdate AS INTEGER)) /365.25) BETWEEN 16 AND 18 THEN 1 ELSE 0 END) AS [16-18],
SUM(CASE WHEN FLOOR((CAST (GetDate() AS INTEGER) - CAST(patient.birthdate AS INTEGER)) /365.25) BETWEEN 19 AND 23 THEN 1 ELSE 0 END) AS [19-23],
SUM(CASE WHEN FLOOR((CAST (GetDate() AS INTEGER) - CAST(patient.birthdate AS INTEGER)) /365.25) BETWEEN 24 AND 30 THEN 1 ELSE 0 END) AS [24-30],
SUM(CASE WHEN FLOOR((CAST (GetDate() AS INTEGER) - CAST(patient.birthdate AS INTEGER)) /365.25) BETWEEN 31 AND 40 THEN 1 ELSE 0 END) AS [31-40],
SUM(CASE WHEN FLOOR((CAST (GetDate() AS INTEGER) - CAST(patient.birthdate AS INTEGER)) /365.25) BETWEEN 41 AND 50 THEN 1 ELSE 0 END) AS [41-50],
SUM(CASE WHEN FLOOR((CAST (GetDate() AS INTEGER) - CAST(patient.birthdate AS INTEGER)) /365.25) BETWEEN 51 AND 65 THEN 1 ELSE 0 END) AS [51-65],
SUM(CASE WHEN FLOOR((CAST (GetDate() AS INTEGER) - CAST(patient.birthdate AS INTEGER)) /365.25) > 65 THEN 1 ELSE 0 END) AS [>65]
from patient
inner join incident
on patient.id = incident.patientConcerned
group by serviceid
Но что я пытаюсь выше, считается возраст всех пациентов для всех своих инцидентов, а это означает, что я не считая отдельных пациентов. (например, я рассчитываю пациента 1, дважды и пациента 3, три раза)
Так что я хочу присоединиться к этим двум таблицам, но только с одной строкой.
Как я могу это сделать?
Почему вам нужно соединить таблицы? Просто знать, что у пациента есть один или несколько инцидентов? Если это так, переместите критерии в предложение WHERE (EXISTS ...). – jarlh
Любой инцидент может это сделать. я не возражаю, все они имеют информацию, которую я хочу – Daggy
, что вы используете? MySQL? оракул? – road242