Проблема в том, что b
не понято - или, в лучшем случае, является ссылкой на столбец в таблице, а не на ваше выражение.
Это общее свойство SQL. Вы не можете повторно использовать псевдоним столбца в предложениях SELECT
, FROM
или WHERE
в одном запросе. У вас есть три основных варианта в MySQL:
- Использовать подзапрос
- Повторите выражение
- Используйте CTE
В этом случае на самом деле существует четвертый вариант, поскольку переписывание запроса упрощает логику:
select date,
sum(case license_id when 'b' then data.Amount else 0 end) AS b,
sum(case when license_id in ('b', '1', '2', '3') then data.Amount else 0
end) as c,
from ...
Обратите внимание, что форма case
немного отличается, когда логические условия следуют после when
.
Кроме того, одинарные кавычки не нужны для псевдонимов столбцов. Если вы хотите предотвратить проблемы в своем коде, используйте только одинарные кавычки для констант строки и даты.