 |
พยายาม หาคำตอบสั้นๆ ที่จะเขียนคำสั่งให้การ count ได้ค่า 0 มาแสดงด้วย |
|
 |
|
|
 |
 |
|
ใช้ case when ช่วยครับ(SQL)
select case when count(*) >0 then count(*) else 0 end result from table_name
ประยุกต์ใช้แบบด้านล่าง
Code (SQL)
SELECT
co_office.distid AS `รหัสอำเภอ`,
co_office.cup_code AS `รหัสcup`,
co_office.off_id AS `รหัสสถานบริการ`,
co_office.off_name AS `ชื่อสถานบริการ`,
case when
Count(DISTINCT chronic.cid,chronic.pcucode,chronic.pid)>0
then Count(DISTINCT chronic.cid,chronic.pcucode,chronic.pid)
else 0 end `จำนวนผู้ป่วยเบาหวาน`
FROM
chronic
LEFT OUTER JOIN co_office ON chronic.pcucode = co_office.off_id
INNER JOIN labfu ON chronic.pcucode = labfu.pcucode AND chronic.pid = labfu.pid
WHERE
chronic.chronic BETWEEN 'E10' AND 'E149'
GROUP BY
co_office.off_id
ORDER BY
`รหัสอำเภอ` ASC,
`รหัสcup` ASC,
`รหัสสถานบริการ` ASC
|
 |
 |
 |
 |
Date :
2013-04-01 01:12:51 |
By :
mangkunzo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทดลองแล้ว ได้ผลตามความต้องการเลย ทุ่นเวลาเอาไปจัดเรียงข้อมูลเยอะเลยครับ ไม่ผิดหวังกับ thaicreate.com และลืมไม่ได้ต้องขอขอบคุณ mangkunzo ไว้ในที่นี้ด้วย
|
 |
 |
 |
 |
Date :
2013-04-01 13:01:48 |
By :
narongchai2511 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แต่ว่า แล้วทำไมเมื่อเพิ่มเงื่อนไขแล้ว ในความหมายเดียวกันทำไมสถานบริการไม่ออกทั้งหมด ออกเฉพาะที่มี
Code
SELECT
co_office.distid AS `รหัสอำเภอ`,
co_office.cup_code AS `รหัสcup`,
co_office.off_id AS `รหัสสถานบริการ`,
co_office.off_name AS `ชื่อสถานบริการ`,
case WHEN
Count(DISTINCT chronic.cid,chronic.pcucode,chronic.pid)>0
THEN Count(DISTINCT chronic.cid,chronic.pcucode,chronic.pid)
ELSE 0 END `เบาหวานที่มารับบริการในช่วง1ตค55-28กพ56และhba1cนก7%`
FROM
chronic
LEFT OUTER JOIN co_office ON chronic.pcucode = co_office.off_id
INNER JOIN labfu ON chronic.pcucode = labfu.pcucode AND chronic.pid = labfu.pid
WHERE
chronic.chronic BETWEEN 'E10' AND 'E149' AND
labfu.date_serv BETWEEN 20121001 AND 20130228 AND
labfu.labtest = 05 AND
labfu.labresult < 7
GROUP BY
co_office.off_id
ORDER BY
`รหัสอำเภอ` ASC,
`รหัสcup` ASC,
`รหัสสถานบริการ` ASC
ผมใส่ผิดที่รึเปล่า
|
 |
 |
 |
 |
Date :
2013-04-01 14:03:44 |
By :
narongchai2511 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองเปลี่ยน `เบาหวานที่มารับบริการในช่วง1ตค55-28กพ56และhba1cนก7%` เป็นประโยคอื่นดูครับ
|
 |
 |
 |
 |
Date :
2013-04-01 21:30:14 |
By :
mangkunzo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองเปลี่ยนแล้วยังขึ้นไม่ครบ แต่ขอบคุณนะครับที่เอาใจช่วย จะพยายามต่อไปอีก
|
 |
 |
 |
 |
Date :
2013-04-02 06:14:02 |
By :
tuttu34 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไปเจอบทสรุป ที่ตอบโจทย์ข้อนี้ได้อีกแบบนึง น่าสนใจ
Code (SQL)
SELECT
distid AS DistID,
cup_code AS Cup,
off_id AS Hoscode,
off_name AS Hosname,
(SELECT
Count(DISTINCT chronic.cid,chronic.pcucode,chronic.pid) AS `จำนวนผู้ป่วยเบาหวาน`
FROM
chronic
#LEFT OUTER JOIN co_office ON chronic.pcucode = co_office.off_id
INNER JOIN labfu ON chronic.pcucode = labfu.pcucode AND chronic.pid = labfu.pid
WHERE
chronic.chronic BETWEEN 'E10' AND 'E149'
GROUP BY
o.off_id)
FROM
co_office o
WHERE LENGTH(cup_code) = 5
GROUP BY
off_id
|
ประวัติการแก้ไข 2013-04-04 23:21:10 2013-04-04 23:28:17 2013-04-04 23:31:16
 |
 |
 |
 |
Date :
2013-04-02 06:15:40 |
By :
narongchai2511 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
INNER JOIN labfu
เปลี่ยนเป็น
LEFT OUTER JOIN labfu
|
 |
 |
 |
 |
Date :
2013-04-07 07:23:35 |
By :
kerb |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
->>>ขอบคุณ สำหรับทุกความคิดเห็นนะครับ <<<....ไม่ได้เข้ามาดู พอดีได้คำตอบแล้วก็จากไปเลย(แบบไม่มีเยื่อใย) 
|
 |
 |
 |
 |
Date :
2013-05-14 14:37:10 |
By :
narongchai2511 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|