【问题标题】:SQL Refer to alias in subquerySQL 在子查询中引用别名
【发布时间】:2020-10-16 15:18:11
【问题描述】:

我想查询一个如下所示的表:

customer_id (INT)、transaction_date (DATE)、income(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”。 如何将子查询引用到在第一个查询中创建的别名?

【问题讨论】:

  • 子查询返回多于一个结果,这是您的 sib 查询无法正常工作的原因,除了您不能在该位置使用别名

标签: mysql sql sum subquery having-clause


【解决方案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 年进行过交易的客户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多