【发布时间】:2019-09-24 13:00:26
【问题描述】:
我有多个表,其中包含一些客户端的数据。我想要实现的是输出某个客户在第一个月被计费的金额。
所以我运行类似于下面的代码:
SELECT company,clientid,COALESCE (signed.value,reactivated.value) as 'Activation' , Amount FROM `tblclients`
LEFT JOIN tblcustomfieldsvalues as signed ON tblclients.clientid = signed.relid and signed.fieldid = 5
LEFT JOIN tblcustomfieldsvalues as reactivated ON tblclients.userid = reactivated.relid and reactivated.fieldid = 27
LEFT JOIN (
SELECT clientid,sum(total) as Amount FROM tblinvoices
WHERE month(invoicedate)=month(Activation) Group by clientid) as f on tblclients.clientid = f.clientid
我的问题是,当我进行最后一次连接时,它给出了一个错误:'where 子句'中的未知列'Activation'。 如果我将其切换为 current_date,则查询的其余部分将起作用。
知道如何进行这项工作吗?
稍后编辑:我可能过度简化了查询,我也有一个 COALESCE
【问题讨论】:
-
加入时不能使用别名。尝试使用您的实际列名
-
您不能在
WHERE子句中使用别名。只需将Activation替换为它的定义,即activated.value -
我也有一个 COALESCE,所以我不能直接引用它。由于“激活”列来自连接,我无法直接引用它