Самый простой способ для этого - преобразовать финансовую неделю в INT64
, а затем вычесть 1 в FW 2018.Этот запрос должен работать для вас:
SELECT * from table2019 a
join table2018 b on SUBSTR(a.week2019,5) = SUBSTR(CAST(CAST(b.week2018 as int64) - 1
as STRING),5)
С некоторыми фиктивными данными:
#standardSQL
with table2019 as (
SELECT CAST(week as string) as week2019
FROM UNNEST(generate_array(201901,201915)) as week
),
table2018 as (
SELECT CAST(week as string) as week2018
FROM UNNEST(generate_array(201801,201815)) as week
)
SELECT * from table2019 a
join table2018 b on SUBSTR(a.week2019,5) = SUBSTR(CAST(CAST(b.week2018 as int64) - 1 as STRING),5)
он возвращает:
Row week2019 week2018
1 201901 201802
2 201902 201803
3 201903 201804
4 201904 201805
5 201905 201806
6 201906 201807
7 201907 201808
8 201908 201809
9 201909 201810
10 201910 201811
11 201911 201812
12 201912 201813
13 201913 201814
14 201914 201815
Он объединяет неделю1 2019 сweek2 of 2018. Обратите внимание, что последняя неделя 2019 года может не совпадать с любой из 2018, если у них одинаковое количество недель (или в 2018 году меньше недель, чем в 2019 году).