select if(sex=1,"ชาย","หญิง"),sex,i.spclty,sp.name,count(a.an) as total from an_stat a
left outer join ipt i on i.an=a.an
left outer join spclty sp on sp.spclty=i.spclty
where i.dchdate between "2011-06-01" and "2011-08-31" and a.ward="01"
group by i.spclty
ถ้าแบบนี้มันจะมารวมกันไม่แยกชาย/หญิงครับ โดยเจอเพศไหนก่อนจะแสดงข้อมูลรวมในเพศนั้น
ต้องเพิ่ม sex ใน group by เป็น
select if(sex=1,"ชาย","หญิง"),sex,i.spclty,sp.name,count(a.an) as total from an_stat a
left outer join ipt i on i.an=a.an
left outer join spclty sp on sp.spclty=i.spclty
where
i.dchdate between "2011-06-01" and "2011-08-31" and a.ward="01"
group by i.spclty,
sexผลลัพธ์จึงจะแยกตามเพศอีกทีครับ แต่จะแสดงใน 2 บรรทัด
ส่วนของท่านวรเวทย์ (เซียน SQL ตัวจริง)
select a.spclty,s.name,sum(a.sex=1) Male,sum(a.sex=2) FeMale
from an_stat a
left join spclty s on a.spclty=s.spclty
where a.regdate between "2011-10-01" and "2012-09-30"
group by a.spclty
จะแสดงออกมาในบรรทัดเดียวกันทั้งสองเพศ แยกเป็น 2 column ครับ
ปล. ตัวอย่างตามรูป ผมอนุมานนับตาม regdate ไปก่อน ถูก/ผิด แก้ไขได้ตามต้องการ (เช่น เปลี่ยนเป็น dchdate)