SELECT pr.provid, pr.provname, COUNT(DISTINCT impo.cid) AS Count2Q, SUM(CASE WHEN impo.score2q >= 1 THEN 1 ELSE NULL END) AS 2QPositive
FROM depres_person_2q_new impo
INNER JOIN depres_office o ON impo.offid = o.offid
INNER JOIN depres_province pr ON o.provid = pr.provid
INNER JOIN depres_person_9q n ON impo.cid = n.cid
INNER JOIN depres_person_8q e ON impo.cid = e.cid
WHERE impo.lastupdate between '2010-10-01' and '2011-03-21'
GROUP BY pr.provname
ปัญหาคือ ในส่วน SUM(CASE WHEN impo.score2q >= 1 THEN 1 ELSE NULL END) AS 2QPositive
มี impo.cid ที่มีค่า impo.score2q>=1 ซ้ำกันอยู่ครับ อยากให้รวมเฉพาะ impo.cid เดียวที่ไม่ซ้ำกัน ต้องเขียนคำสั่งยังไงครับ
ช่วยด้วยครับมือใหม่หัดทำครับ
Tag : MySQL
Date :
2011-04-02 10:51:12
By :
tongchanana
View :
1888
Reply :
2
No. 1
Guest
Code
SELECT pr.provid, pr.provname, COUNT(DISTINCT impo.cid) AS Count2Q,
SUM (DISTINCT CASE impo.cid WHEN 'impo.score2q >= 1' THEN 1 ELSE NULL END) AS 2QPositive
FROM depres_person_2q_new impo
INNER JOIN depres_office o ON impo.offid = o.offid
INNER JOIN depres_province pr ON o.provid = pr.provid
INNER JOIN depres_person_9q n ON impo.cid = n.cid
INNER JOIN depres_person_8q e ON impo.cid = e.cid
WHERE impo.lastupdate between '2010-10-01' and NOW ()
GROUP BY pr.provname