Stack Overflow 新手(以及一般编码)。
我做了一些研究,但无法找到以下问题的答案:
如何根据应用于维度的函数结果而不是维度本身连接两个表?
即我想将以下两个表连接到函数 lower() 的小写结果上,而不是按原样连接大小写不明确的维度。
SELECT
lower(first_name) as firstname
,lower(last_name) as lastname
,lower(email) as email1
,total_donated
From BensData.Donations As a
JOIN EACH
(Select
lower(first_name) as first
,lower(last_name) as last
,lower(email) as email2
,sum(amount) as total_donated
From BensData.Donations
GROUP BY email2, first, last) As b
ON a.email1=b.email2 AND a.firstname=b.first AND a.lastname=b.last
它不允许我加入在第一个表 (a) 中创建的别名,但是,如果我加入表 a 中的原始维度(名字和姓氏),那么结果将基于大小写不明确的维度,并给出不想要的结果。
我希望这是清楚的。
感谢您的帮助!
最佳答案
尝试使用两个子查询,如下所示:
SELECT
a.firstname
,a.lastname
,a.email1
,a.total_donated
FROM
(SELECT
lower(first_name) as firstname
,lower(last_name) as lastname
,lower(email) as email1
,total_donated
From BensData.Donations) As a
JOIN EACH
(Select
lower(first_name) as first
,lower(last_name) as last
,lower(email) as email2
,sum(amount) as total_donated
From BensData.Donations
GROUP BY email2, first, last) As b
ON a.email1=b.email2 AND a.firstname=b.first AND a.lastname=b.last
在您的原始查询中,a 只是 BensData.Donations 的别名,因此您只能联接该表中存在的字段。
关于sql - 在 JOIN 的 ON 子句中使用别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27538460/