我的工作是处理病人数据。当加入表格以显示哪个临床医生看过病人时,如果病人看了一个以上的临床医生,我会得到多行。我已经使用行号函数来尝试突出显示第二个临床医生。但是,我需要每一行表示一个患者,如果有多个临床医生,则需要其他列来显示临床医生的姓名。
我从我的查询中输出了以下数据
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 发布于 2014-07-17 20:56:23
您可以对此使用条件聚合:
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;https://stackoverflow.com/questions/24804020
复制相似问题