我的SQL查询SUM分组有什么问题

问题描述 投票:0回答:1

您好我有一个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);
sql group-by sum
1个回答
1
投票

尝试这个:你已经在你的子查询中已经使用了一个月,然后再次使用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)
© www.soinside.com 2019 - 2024. All rights reserved.