SQL ссылается на псевдоним в подзапросе

#mysql #sql #sum #subquery #having-clause

#mysql #sql #сумма #подзапрос #having-предложение

Вопрос:

Я хочу запросить таблицу, которая выглядит следующим образом:

customer_id (INT), transaction_date (ДАТА), доход (INT)

Я пытаюсь создать таблицу, в которой отображается сумма дохода на отдельный customer_id, за исключением клиентов, которые совершали транзакции ТОЛЬКО в 2014 году.

Мой запрос:

SELECT DISTINCT(customer_id) AS a_customer_id, sum( case when (SELECT YEAR(transaction_date) FROM table__ WHERE customer_id = a_customer_id) != ('2014') then income else 0 end) AS sum_income FROM table__ GROUP BY a_customer_id ORDER BY sum_income DESC;

Ошибка, которую я получаю, — «Неизвестный столбец a_customer_id «. Как мне сослаться в подзапросе на псевдоним, созданный в первом запросе?

Комментарии:

1. подзапрос возвращает более одного результата, что является основной причиной, по которой ваш запрос sib не работает, кроме того, вы не можете использовать псевдоним в этой позиции

Ответ №1:

Ваш запрос не является допустимым SQL. Судя по описанию вашего вопроса, вам, похоже, нужна агрегация и having предложение:

 select customer_id, sum(income) sum_income
from mytable
group by customer_id
having max(year(transaction_date ) <> 2014) = 1
  

Это дает вам общее income количество по клиентам, отфильтровывая клиентов, у которых были транзакции только в 2014 году.