在我的查询中MySQL未知列

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

我有以下MySQL查询

select 
    keliones_lapas.Vairuot_Id, 
    MONTH(keliones_lapas.Data_darbo), 
    sum(keliones_lapas.uzdarbis) as Got, 
    coalesce(Suma, 0) Suma, 
    (sum(keliones_lapas.uzdarbis) - coalesce(Suma, 0)) Total
from keliones_lapas
left join (select Vairuotas, MONTH(Data_islaidu), sum(Suma) as Spend 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);

我收到这个错误:

1054 - Unknown column 'Suma' in 'field list'

我知道这个问题是众所周知的,但我不知道如何解决这个问题。 This is the cause of the issue which is solved

我可以提供小提琴:http://sqlfiddle.com/#!9/e76ef9/8

mysql sql mysql-error-1054
1个回答
2
投票

您只需要在子查询中对所有计算列进行别名,然后就可以在ON子句中引用这些别名。以下是使用Data_islaidu和Suma列别名的SQL:

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);
© www.soinside.com 2019 - 2024. All rights reserved.