ไม่รู้ผมตีโจทย์ถูกเปล่านะครับ
-สิทธิปัจจุบัน ณ ตอนที่รัน รายงาน ? ต้อง join ไปตาราง patient กับ pttypeno เพื่อดึงสิทธิปัจจุบัน
-ส่วน hospsub เป็นค่าว่าง ? น่าจะเป็นสิทธิชำระเงินเอง หรือสิทธิที่ไม่ต้องใส่ hospmain และ hospsub
ถ้าเข้าใจแบบนี้ น่าจะได้ query ประมาณนี้ครับ
select h.name,h.hospcode,count(vn.vn) as sumvn,count(distinct vn.hn) as cc
from vn_stat vn
inner join patient pt on pt.hn = vn.hn
left join pttypeno pttn on pttn.hn = pt.hn and pttn.pttype = pt.pttype
left join pttype ptt on ptt.pttype = pttn.pttype
left join hospcode h on h.hospcode = pttn.hospsub
left join clinicmember cm on cm.hn = vn.hn
where vn.vstdate between '2011-08-01' and '2011-08-31'
and ptt.pcode <> 'A1'
group by vn.hospsub
order by cc desc