扩充sql查询,将id转换为可读值

jgwigjjp  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(299)

我是个十足的sql新手,所以请容忍我…
我有一个数据转换和加载服务,每小时向googlebigquery中的表发送一次嵌套的json数据。基于对google的站点和这个站点的研究,我构建了下面的查询。此查询确保视图仅包含基于 _sdc_sequence field 以及 _sdc_batched_at 字段(因为我的数据服务每小时仅使用基于密钥的增量复制发送更改的数据):

SELECT DISTINCT x.*
FROM 'the_database.the_salesforce_table.Lead' x INNER JOIN
     ( SELECT id, MAX(_sdc_sequence) AS seq, MAX(_sdc_batched_at) AS batch 
       FROM 'the_database.the_salesforce_table.Lead'
       GROUP BY id
     ) xx
     ON x.id = xx.id AND x._sdc_sequence = xx.seq AND
        x._sdc_batched_at = xx.batch

我希望有人能帮助我修改这个查询,以便帮助我理解如何聚合和包含来自另一个同级表的数据。
在我的lead表中有一个字段, convertedaccountid . 我想提及 account table,我可以在上面和 account table的 id 字段返回相关的 name 字段–从而转换 convertedaccountid 其相关的人类可读价值 name .

编辑我在实际的表和字段上有点说错了,但概念非常相似。下面是一个粗略的表模式,它显示了我希望如何通过opportunity表上的accountid引用id,从account表中检索name。https://i.imgur.com/guqiyjq.png

(很抱歉我延迟更新此消息-正在从手术中恢复)

nhn9ugyo

nhn9ugyo1#

如果基本上需要在另一个表中进行查找,可以在查询中插入另一个联接,如下所示:

SELECT DISTINCT x.*, acc.name
FROM 'the_database.the_salesforce_table.Lead' x INNER JOIN
     ( SELECT id, MAX(_sdc_sequence) AS seq, MAX(_sdc_batched_at) AS batch 
       FROM 'the_database.the_salesforce_table.Lead'
       GROUP BY id
     ) xx
     ON x.id = xx.id AND x._sdc_sequence = xx.seq AND
        x._sdc_batched_at = xx.batch
LEFT JOIN <account_table> acc ON acc.id = x.convertedaccountid

如果这对你有帮助,请告诉我

相关问题