Sql 如何将重复的行移动到列中,使每一行都是唯一的
我处理患者数据。当加入表格以显示哪个clician看到了患者时,如果患者看到了多个临床医生,我会看到多行。我使用了一个行号函数来突出显示第二位临床医生。但是,我需要每行代表一名患者,如果有多个临床医生,则需要额外的列来显示临床医生的姓名 我的查询输出了以下数据Sql 如何将重复的行移动到列中,使每一行都是唯一的,sql,Sql,我处理患者数据。当加入表格以显示哪个clician看到了患者时,如果患者看到了多个临床医生,我会看到多行。我使用了一个行号函数来突出显示第二位临床医生。但是,我需要每行代表一名患者,如果有多个临床医生,则需要额外的列来显示临床医生的姓名 我的查询输出了以下数据 patient Clinician seen Clinician number 1 joe 1 2 dan 1 2 pe
patient Clinician seen Clinician number
1 joe 1
2 dan 1
2 peter 2
3 sandra 1
4 andrea 1
4 steve 2
5 helen 1
我需要输出为:
patient Clinician seen 1 person seen 2
1 joe NULL
2 dan peter
3 sandra NULL
4 andrea steve
5 helen NULL
我的问题是:
SELECT
patient,
Clinician_seen,
,ROW_NUMBER ( ) OVER(PARTITION BY patient ORDER BY Clinician_seen asc )
FROM
patients
clinicians on patients.patietn_id = clinicians.patietn_id
您可以为此使用条件聚合:
SELECT patient,
MAX(case when cnum = 1 then Clinician_seen end) as Clinician1,
MAX(case when cnum = 2 then Clinician_seen end) as Clinician2
FROM (SELECT p.patient, c.Clinician_seen,
ROW_NUMBER ( ) OVER (PARTITION BY p.patient ORDER BY c.Clinician_seen asc ) as cnum
FROM patients p JOIN
clinicians c
on p.patient_id = c.patient_id
) t
GROUP BY patient;