我有一张桌子,上面有几位医生访问病人,每次访问都有自己的note
栏,工作人员可以从访问中插入笔记。
每次访问都有一个由工作人员访问的每个注释列。例如Note_visit1
,Note_visit2
,Note_visit3
。
每次访问都记录了员工的ID,例如StaffID_visit1
,StaffID_visit2
,StaffID_visit3
。
我的问题是试图回答这个问题:
每位员工对每位患者的笔记数量。
表格看起来像这样,忽略哑巴笔记。
patientID| Note_V1 | StaffID_v1 | Note_V2 | StaffID_v2 |
1 | "cat" | 101 | "dog" | 102 |
2 | "camel" | 105 | "rat" | 101 |
答案 0 :(得分:0)
我想你想要这样的东西:
select patient_id, staffid, count(*)
from ((select patient_id, staffid_v1 as staffid, note_v1 as note
from visits
) union all
(select patient_id, staffid_v2 as staffid, note_v2 as note
from visits
) union all
(select patient_id, staffid_v3 as staffid, note_v3 as note
from visits
)
) v
where note <> ''
group by patient_id, staffid;