I've two tables Documents and poi_data . Documents contains two types of forms ETP and FP10 . I want to count both type of forms based on numbers and sum of two alias shown in below query. Unfortunately its not working.
Document Table (id,title ,type ,status)
poi_data Table (poi_id, doc_id, form_number, status)
SELECT
COUNT(DISTINCT CASE WHEN documents.title LIKE '%ETP%' THEN poi_data.form_number END) AS form_count_one,
COUNT(DISTINCT CASE WHEN documents.title LIKE '%FP10%' THEN poi_data.form_number END) AS form_count_two,
SUM(form_count_one + form_count_two) as total_form_count FROM poi_data
LEFT JOIN documents ON (poi_data.doc_id = documents.id AND documents.status = 1)
WHERE poi_data.pid = 781 AND poi_data.poi_id = 8
SELECT
(COUNT(DISTINCT CASE WHEN documents.title LIKE '%ETP%' THEN poi_data.form_number END) +
COUNT(DISTINCT CASE WHEN documents.title LIKE '%FP10%' THEN poi_data.form_number END) AS total_form_count FROM poi_data
LEFT JOIN documents ON (poi_data.doc_id = documents.id AND documents.status = 1)
WHERE poi_data.pid = 781 AND poi_data.poi_id = 8
You dont need to use SUM because you just want count not the average or what. And then simply ad them using '+'
Just use a subquery:
SELECT form_count_one, form_count_two
(form_count_one + form_count_two) as total_form_count
FROM (SELECT COUNT(DISTINCT CASE WHEN d.title LIKE '%ETP%' THEN pd.form_number END) AS form_count_one,
COUNT(DISTINCT CASE WHEN d.title LIKE '%FP10%' THEN pd.form_number END) AS form_count_two
FROM poi_data pd LEFT JOIN
documents d
ON pd.doc_id = d.id AND d.status = 1
WHERE pd.pid = 781 AND pd.poi_id = 8
) d
It should be like
select SUM(form_count_one + form_count_two) as total_form_count from (SELECT
COUNT(DISTINCT CASE WHEN documents.title LIKE '%ETP%' THEN poi_data.form_number END) AS form_count_one,
COUNT(DISTINCT CASE WHEN documents.title LIKE '%FP10%' THEN poi_data.form_number END) AS form_count_two,
FROM poi_data
LEFT JOIN documents ON (poi_data.doc_id = documents.id AND documents.status = 1)
WHERE poi_data.pid = 781 AND poi_data.poi_id = 8)alias_name
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.