mysql - 加入 2 个表给出空结果
问题描述
我想合并这两个表。
销售表
费用表
这是我将它们组合在一起的代码:
SELECT sl.month, sl.sumnet, ex.sumexp, (sl.sumnet-ex.sumexp) AS profit
FROM
(SELECT date, DATE_FORMAT(date,'%m%Y') AS date_id,
DATE_FORMAT(date,'%b') AS month,
YEAR(date) AS year, SUM(net_sales) AS sumnet
FROM sales
GROUP BY month) sl
LEFT JOIN
(SELECT date, DATE_FORMAT(date,'%m%Y') AS date_id,
DATE_FORMAT(date,'%b') AS month,
YEAR(date) AS year, SUM(total) as sumexp
FROM expense
GROUP BY month) ex
ON sl.date_id = ex.date_id
WHERE sl.year = '2021'
ORDER BY sl.date_id ASC
我只想显示 2021 年的结果,但 11 月显示NULL
和sumexp
列profit
(见下文)。我如何解决它?
解决方案
可能的答案,你必须照顾nulls
select
s.date_id,
s.`month` ,
s.`year` ,
sum(s.sumnet),
sum(distinct coalesce(e.sumexp,0)),
sum(s.sumnet) - sum(distinct coalesce(e.sumexp,0))
from sales as s
left join expanse as e on s.date_id = e.date_id and s.`month` = e.`month` and s.`year` = e.`year`
group by date_id, `month` , `year`;
并根据您的愿望进行过滤。
推荐阅读
- java - Spring Data 未提交到数据库
- android-studio - 如何在另一个活动中使用一个活动的 onActivityForResult
- wordpress - wordpress核心中activate_plugin函数的解释
- haskell - 在 map 函数中查找当前元素的索引
- c# - 如何在 ASP Web 表单中添加附件,但不上传到服务器?
- java - 在 Firebase 中增加价值和存储
- react-native - React Native MapView 不滚动,缩小。那么我该如何实现呢?
- sas - 删除最后一个逗号 SAS 之后的所有内容
- php - PHP如何将多个值添加到多维度数组
- android - 更改可访问性的不透明度