Postgresql多列中出现的次数

时间:2016-11-25 17:15:49

标签: sql postgresql

我有一张桌子,上面有几位医生访问病人,每次访问都有自己的note栏,工作人员可以从访问中插入笔记。

每次访问都有一个由工作人员访问的每个注释列。例如Note_visit1Note_visit2Note_visit3。 每次访问都记录了员工的ID,例如StaffID_visit1StaffID_visit2StaffID_visit3

我的问题是试图回答这个问题:

每位员工对每位患者的笔记数量。

表格看起来像这样,忽略哑巴笔记。

patientID|  Note_V1  |  StaffID_v1  |  Note_V2  |  StaffID_v2  |    
1        |  "cat"    |  101         |  "dog"    |  102         |  
2        |  "camel"  |  105         |  "rat"    |  101         |

1 个答案:

答案 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;