我的SQL查询SUM分组有什么问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的SQL查询SUM分组有什么问题相关的知识,希望对你有一定的参考价值。
您好我有一个SQL查询,它不计算我的一行。这被称为花费,你可以在小提琴中看到它。我的代码出了什么问题?我只需要基本表
Month ID GOT SPEND
1 1 100 50
2 1 500 200
1 2 200 50
我创造了小提琴http://sqlfiddle.com/#!9/3623b1/2
请你帮助我好吗?
这是查询:
select
keliones_lapas.Vairuot_Id,
MONTH(keliones_lapas.Data_darbo),
sum(keliones_lapas.uzdarbis) as Got,
coalesce(Suma, 0) AS Spend,
(sum(keliones_lapas.uzdarbis) - coalesce(Suma, 0)) Total
from keliones_lapas
left join (
select Vairuotas,
MONTH(Data_islaidu) as Data_islaidu,
sum(Suma) as Suma
from islaidos
group by Vairuotas, MONTH(Data_islaidu)) islaidos
on keliones_lapas.Vairuot_Id = islaidos.Vairuotas
and MONTH(keliones_lapas.Data_darbo) = MONTH(islaidos.Data_islaidu)
group by keliones_lapas.Vairuot_Id, MONTH(keliones_lapas.Data_darbo), Suma
order by keliones_lapas.Vairuot_Id, MONTH(keliones_lapas.Data_darbo);
答案
尝试这个:你已经在你的子查询中已经使用了一个月,然后再次使用MONTH
从连接中的月份检索,所以它返回NULL
并且不匹配任何月份的keliones_lapas
SELECT
keliones_lapas.Vairuot_Id,
MONTH(keliones_lapas.Data_darbo),
SUM(keliones_lapas.uzdarbis) AS Got,
COALESCE(Suma, 0) AS Spend,
(SUM(keliones_lapas.uzdarbis) - COALESCE(Suma, 0)) Total
FROM keliones_lapas
LEFT JOIN (
SELECT Vairuotas,
MONTH(Data_islaidu) AS Data_islaidu, --It's already in MONTH
SUM(Suma) AS Suma
FROM islaidos
GROUP BY Vairuotas, MONTH(Data_islaidu)) islaidos
ON keliones_lapas.Vairuot_Id = islaidos.Vairuotas
AND MONTH(keliones_lapas.Data_darbo) = Data_islaidu --No need to use MONTH or `vice versa`
GROUP BY keliones_lapas.Vairuot_Id, MONTH(keliones_lapas.Data_darbo), Suma
ORDER BY keliones_lapas.Vairuot_Id, MONTH(keliones_lapas.Data_darbo)
以上是关于我的SQL查询SUM分组有什么问题的主要内容,如果未能解决你的问题,请参考以下文章