ลองดูนะครับ ไม่ทราบว่าจะตรงตามต้องการหรือเปล่า
select v.vstdate as visit_date,v.hn,concat(p.pname,p.fname,' ',p.lname)as ptname,concat(v.pdx,' - ',i.name)as first_dx,a.regdate as admit_date,a.an,concat(a.pdx,' - ',c.name)as principle_dx
from vn_stat v
left outer join patient p on p.hn=v.hn
left outer join an_stat a on a.vn=v.vn
left outer join icd101 i on i.code=v.pdx
left outer join icd101 c on c.code=a.pdx
where v.vstdate between '2008-01-01' and '2008-01-31' and a.an is not null