ผู้เขียน หัวข้อ: เกี่ยวกับ SQL มาฝากให้ช่วยคิดครับผม น่าคิดนะครับ  (อ่าน 3377 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
คือว่าผมจะดึงยอด ผู้ป่วย HT ครับ โดยแยกเป็น สองยอด ผู้ป่วย HT ที่อายุ 15-34 ปี ครับ
และที่อายุ 35 ปีขึ้นไปครับ โดยใช้คำสั่งนี้ครับ

select count(distinct(o.hn))  from ovstdiag o,vn_stat v
where  v.hn=o.hn and v.age_y >="15" and v.age_y<="34" and o.icd10 between "i10" and "i159"
and o.vstdate<"2009-10-01"

ดึงอายุจาก visit ครับผม 15-34

จากนั้น

select count(distinct(o.hn))  from ovstdiag o,vn_stat v
where  v.hn=o.hn and v.age_y >="35"  and o.icd10 between "i10" and "i159"
and o.vstdate<"2009-10-01"

ดึงอายุจาก visit ครับ ตั้งแต่35 ขึ้นไป


คำถามคือถ้าคนไข้มา หลาย visit ซึ่งไม่ได้เอาอายุล่าสุด มันจะนับคนไข้คนเดียวอยู่ทั้งสองรายงาน ใช่มั้ยครับ
ทำไงถึงจะเอาแต่อายุที่มากที่สุดได้ครับ

ขอบคุณครับ
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: เกี่ยวกับ SQL มาฝากให้ช่วยคิดครับผม น่าคิดนะครับ
« ตอบกลับ #1 เมื่อ: ตุลาคม 14, 2010, 00:12:31 AM »
0
ขอโทษนะครับถ้าตั้งผิดห้องพอดีไม่รู้ว่าจะตั้งห้อง sql ดีมั้ยนะครับ
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: เกี่ยวกับ SQL มาฝากให้ช่วยคิดครับผม น่าคิดนะครับ
« ตอบกลับ #2 เมื่อ: ตุลาคม 14, 2010, 00:40:13 AM »
0
ลองเอาวันเกิดลบกับ วันตัดยอด แ่ต่ก็เขียนไม่เป็นซะอีกคับไม่รู้แบบนี้รึปล่าว

select count(diistinct(o.hn)) from ovstdiag o,vn_stat v,patient p
where v.hn=o.hn and o.hn=p.hn and datediff("2009-10-01",p.birthday)>="35" and o.icd10 between "i10" and "i159"
and o.vstdate<"2009-10-01"

ช่วยหน่อยนะครับ
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ เกื้อกูล ครับ..

  • Hero Member
  • *****
  • กระทู้: 12,611
  • Respect: +169
    • ดูรายละเอียด
    • โรงพยาบาลปากท่อ
Re: เกี่ยวกับ SQL มาฝากให้ช่วยคิดครับผม น่าคิดนะครับ
« ตอบกลับ #3 เมื่อ: ตุลาคม 14, 2010, 08:42:34 AM »
0
รายงานอายุมากกว่า 35 ปี ให้เพิ่ม o.hn not in o.hn ของรายงานที่ 1 ได้ป่ะครับ..จะได้ไม่ซ้ำใน 2 รายงาน ณ ช่วงเวลาที่เรียกรายงานเดียวกัน  คงต้องดูจาก อายุ ณ  vstdate เป็นเกณฑ์  และรายงานแบบนี้ คงต้อง parameter ไม่เกิน 1 เดือน เพราะอายุผู้ป่วยจะเปลี่ยนทุกเดือน แน่นอน  :D
Implement  HOSxP  Start 2548 ---> NOW!
Station : 130 Client   V.3 Version  3.67.1.XX
Server  : CENTOS  +MySQL maria 10.x.x

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: เกี่ยวกับ SQL มาฝากให้ช่วยคิดครับผม น่าคิดนะครับ
« ตอบกลับ #4 เมื่อ: ตุลาคม 14, 2010, 08:50:13 AM »
0
ไม่ได้อะคับ รายงานคนละตัวอะ
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: เกี่ยวกับ SQL มาฝากให้ช่วยคิดครับผม น่าคิดนะครับ
« ตอบกลับ #5 เมื่อ: ตุลาคม 14, 2010, 08:58:35 AM »
0
ได้แล้วครับ คำนวณอายุจากวันที่ตัดยอดครับผมทีนี้คนไข้ยอดก็จะไม่มาปนกันแล้ว

select count(distinct(p.hn)) from ovstdiag o ,vn_stat v ,patient p
where  v.hn=o.hn and o.hn=p.hn
and timestampdiff(year,p.birthday,"2009-10-01")>="15"
and timestampdiff(year,p.birthday,"2009-10-01")<="34"
and o.icd10 between "i10" and "i159"
and o.vstdate<"2009-10-01"
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ