以下是一个玩具示例:
select *
from(
select 1 as row_num,298807 as id1,104 as id2,'2018-07-10' as date
union all
select 2,298807,104,'2018-08-02'
union all
select 3,298807,104,'2018-08-06'
union all
select 4,298807,104,'2018-08-08'
union all
select 5,298807,104,'2018-08-24'
union all
select 6,298807,104,'2018-09-28'
union all
select 7,298807,104,'2018-10-01'
union all
select 8,298807,104,'2018-10-28'
union all
select 9,298807,300,'2018-10-30'
union all
select 10,298807,104,'2018-11-12'
union all
select 11,298807,300,'2018-11-20'
union all
select 12,298807,104,'2018-11-30'
union all
select 13,298807,104,'2018-12-02'
union all
select 14,298807,104,'2018-12-03')
对于每一行,我想在id1中找到不同id2的最后一行。例如,对于第11行,输出应该是两个元素的数组“row#9,row#10”,对于第14行,输出应该是“row#11,row#13”。
下面是一个示例输出:
2条答案
按热度按时间6ss1mwsb1#
下面是bigquery标准sql
如果要应用到问题输出的样本数据
bjg7j2ky2#
可以使用数组来实现这一点。聚集一个包含所有值的大数组。然后使用
unnest()
以及一些聚合逻辑来获得您想要的: