与来自 JOIN 的 WHERE 一起加入 [重复]
Posted
技术标签:
【中文标题】与来自 JOIN 的 WHERE 一起加入 [重复]【英文标题】:JOIN with WHERE from JOIN [duplicate] 【发布时间】: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,所以我不能直接引用它。由于“激活”列来自连接,我无法直接引用它
【参考方案1】:
你可以试试下面-
SELECT company,clientid,activated.value as Activation , Amount
FROM `tblclients`LEFT JOIN tblcustomfieldsvalues as signed ON tblclients.clientid = signed.relid and signed.fieldid = 5
LEFT JOIN
( SELECT clientid,sum(total) as Amount
FROM tblinvoices Group by clientid
) as f on tblclients.clientid = f.clientid and month(invoicedate)=month(Activation)
【讨论】:
同样的错误,但在 invoicedate 字段上以上是关于与来自 JOIN 的 WHERE 一起加入 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
一个奇怪的 Oracle SQL,它来自 3 个表,但在 where 子句中只留下了 join 2?