Join 如何在BigQuery中使用小写维度进行连接

Join 如何在BigQuery中使用小写维度进行连接,join,key,google-bigquery,lowercase,Join,Key,Google Bigquery,Lowercase,我有一个BigQuery付款表,其中包含交易id、日期、客户、邮政编码和付款金额列 我想创建一个客户表,其中包含一列总付款,这是客户已支付的所有付款金额的总和 有时,客户在每次购买时使用不同的大写字母输入他们的姓名,这会导致John Smith和John Smith在我的新表中得到不同的行,而他们实际上是同一个人 我想找出一种方法来创建此表,其中John Smith、John Smith和John Smith被视为同一客户。 我试过: SELECT lower(name) as name_a ,

我有一个BigQuery付款表,其中包含交易id、日期、客户、邮政编码和付款金额列

我想创建一个客户表,其中包含一列总付款,这是客户已支付的所有付款金额的总和

有时,客户在每次购买时使用不同的大写字母输入他们的姓名,这会导致John Smith和John Smith在我的新表中得到不同的行,而他们实际上是同一个人

我想找出一种方法来创建此表,其中John Smith、John Smith和John Smith被视为同一客户。 我试过:

SELECT
lower(name) as name_a
,zip
,total_payments
From SweetData.Payments AS a

JOIN EACH

(Select
lower(name) as name_b
,sum(amount) as total_payments
From SweetData.Payments
GROUP BY name_b) As b

ON a.name_a = b.name_b
但是,在ON子句中使用表“a”中的别名时,它给了我一个错误

因此,我尝试在ON子句中使用函数lower(),如下所示:

SELECT
name
,zip
,total_payments
From SweetData.Payments AS a

JOIN EACH

(Select
lower(name) as name_b
,sum(amount) as total_payments
From SweetData.Payments
GROUP BY name_b) As b

ON lower(a.name) = b.name_b
但我也犯了一个错误

谢谢你的帮助

2

如果我理解您的更新请求,这应该可以做到:

SELECT
    a.name
    , a.zip
    , b.total_payments
FROM (
    SELECT
        lower(name) as name
        ,zip
    From SweetData.Payments
) AS b
JOIN (
    select 
        lower(name) as name
        , sum(payments) as total_payments
    from SweetData.Payments 
    group by 1  
) AS a
ON a.name = b.name

嗨,吉尔,谢谢你的回复!我的问题比我最初透露的要复杂一点,恐怕我对这篇文章的理解太多了。(新手错误!)我的第一个表将包括我不会按其对总付款进行分组的维度,因此我相信我需要一个联接。有关我的更正,请参见编辑。再次感谢!我已经做了更改-现在怎么样?嗯,这给了我以下错误:Google BigQuery服务无法编译查询。未找到“总付款”字段。我试图摆弄它,但仍然无法解决问题。谢谢你!是的,当然-我在第一个查询中也有字段total_payments。现在应该可以工作了:)