我有以下表格结构
leads
-id
-fname
-lname
subcontractors
-id
-leads_id
-fname
-lname
-status
潜在客户可以有许多分包商. subcontractors.status告知分包商是否处于活动状态或已暂停
问题是如何选择带有计数列的销售线索,以告诉他们有多少个活动和暂停的子座?
我现在有这个:
SELECT
l.id,
l.fname,
l.lname,
s.status
FROM leads l
INNER JOIN subcontractors s
ON l.id = s.leads_id
GROUP BY l.id ORDER BY l.id DESC;
我的目标是要有这样的东西
id | fname | lname | active_subcon_count | suspended_subcon_count
解决方法:
您可以尝试在CASE WHEN中使用条件汇总函数COUNT
SELECT
l.id,
l.fname,
l.lname,
COUNT(CASE WHEN s.status = 'active' THEN 1 END) ,
COUNT(CASE WHEN s.status = 'suspended' THEN 1 END)
from leads l
INNER JOIN subcontractors s
ON l.id = s.leads_id
GROUP BY l.id , l.fname, l.lname
ORDER BY l.id DESC;
或mysql可以这样做.
SELECT
l.id,
l.fname,
l.lname,
SUM(s.status = 'active') active_subcon_count ,
SUM(s.status = 'suspended') suspended_subcon_count
from leads l
INNER JOIN subcontractors s
ON l.id = s.leads_id
GROUP BY l.id , l.fname, l.lname
ORDER BY l.id DESC;
标签:sql,mysql,database 来源: https://codeday.me/bug/20191024/1922245.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。