[英]Mysql sum of two alias_column not working
I've two tables Documents and poi_data .我有两个表Documents和poi_data 。 Documents contains two types of forms ETP and FP10 .
文档包含两种类型的表单ETP和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.您不需要使用 SUM,因为您只想计数而不是平均值或什么。 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.