SQL如何使两个select语句查询结果合并一个?

  

查询语句1

SELECT MONTH(`询盘表`.`询盘日期`)as `月份`, `询盘表`.`来源`, count(`询盘表`.id) `询盘` FROM `询盘表` GROUP BY MONTH(`询盘表`.`询盘日期`),  `询盘表`.`来源`

 


查询语句2

SELECT MONTH(`询盘表`.`询盘日期`) as `月份`, `询盘表`.`来源`, count(`询盘表`.`有效否`)as  `有效` FROM `询盘表` WHERE `询盘表`.`有效否` = '有' GROUP BY MONTH(`询盘表`.`询盘日期`),  `询盘表`.`来源`

 

合并成

 

--原语句1
SELECT MONTH(`询盘表`.`询盘日期`)as `月份`
	, `询盘表`.`来源`
	, count(`询盘表`.id) `询盘` 
FROM `询盘表` 
GROUP BY MONTH(`询盘表`.`询盘日期`),  `询盘表`.`来源`

--原语句2
SELECT MONTH(`询盘表`.`询盘日期`) as `月份`
	, `询盘表`.`来源`
	, count(`询盘表`.`有效否`)as  `有效` 
FROM `询盘表` 
WHERE `询盘表`.`有效否` = '有' 
GROUP BY MONTH(`询盘表`.`询盘日期`),  `询盘表`.`来源`

-- 合并后语句
SELECT MONTH(`询盘表`.`询盘日期`) as `月份`
	, `询盘表`.`来源`
	, count(`询盘表`.id) `询盘`
	, sum(case when `询盘表`.`有效否` = '有' then 1 else 0 end) as  `有效`
FROM `询盘表` 
GROUP BY MONTH(`询盘表`.`询盘日期`),  `询盘表`.`来源`

group 的时候,本身就可以根据条件进行计算的,把符合条件的汇总或求和或求平均都是支持的

SELECT MONTH(`询盘表`.`询盘日期`)as `月份`, `询盘表`.`来源`, count(`询盘表`.id) `询盘` FROM `询盘表` GROUP BY MONTH(`询盘表`.`询盘日期`),  `询盘表`.`来源`

union all

SELECT MONTH(`询盘表`.`询盘日期`) as `月份`, `询盘表`.`来源`, count(`询盘表`.`有效否`)as  `有效` FROM `询盘表` WHERE `询盘表`.`有效否` = '有' GROUP BY MONTH(`询盘表`.`询盘日期`),  `询盘表`.`来源`

优化SQL的话 楼上正解 和平两个sql 的话使用 union all

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632