MySQL неизвестный столбец в моем запросе

0

У меня есть следующий запрос 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 - Неизвестный столбец "Сума" в "списке полей"

Я знаю, что эта проблема известна, но я не знаю, как ее исправить. Это является причиной проблемы, которая решена

И я могу предоставить скрипку: http://sqlfiddle.com/#!9/e76ef9/8

Теги:
mysql-error-1054

1 ответ

2
Лучший ответ

Вам просто нужно выровнять все вычисленные столбцы в подзапросе, а затем вы можете ссылаться на эти псевдонимы в предложении ON. Вот SQL из вашей скрипки с столбцами Data_islaidu и Suma с псевдонимом:

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);
  • 0
    Спасибо что исправили ошибки !! Не могли бы вы заглянуть в мой sql и понять, почему он не считает тратить?
  • 0
    Это может быть потому, что islaidos.Suma имеет много нулей. Попробуйте SUM (COALESCE (Suma, 0)) AS Suma в своем подзапросе, чтобы получить 0 вместо нулей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню