简体   繁体   English

两个 alias_column 的 Mysql 总和不起作用

[英]Mysql sum of two alias_column not working

I've two tables Documents and poi_data .我有两个表Documentspoi_data Documents contains two types of forms ETP and FP10 .文档包含两种类型的表单ETPFP10 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM