【发布时间】:2018-11-22 15:24:57
【问题描述】:
我想在 Bigquery 的 StandardSQL 中使用以下两个表(POS 和 STAY)来生成以下结果。但是,第三行的join部分并不成功。请告诉我一个好方法。
dt rm total s_dt s_rm s_rank
1 1 r1 100 1 r1 A
2 2 r1 100 2 r1 B
3 3 r1 100 2 r1 B
##dt = date type
这是我写的查询。
WITH POS AS(
select 1 as dt,"r1" as rm,100 as total
UNION ALL
select 2 as dt,"r1" as rm,100 as total
UNION ALL
select 3 as dt,"r1" as rm,100 as total
),
STAY AS(
select 1 as dt,"r1" as rm,"A" as rank
UNION ALL
select 2 as dt,"r1" as rm,"B" as rank
)
SELECT
p.*,
s.dt as s_dt,
s.rm as s_rm,
s.rank as s_rank
FROM
POS as p
LEFT JOIN
STAY as s
ON
p.dt = s.dt
and
p.rm = s.rm
这是结果。
dt rm total s_dt s_rm s_rank
1 1 r1 100 1 r1 A
2 2 r1 100 2 r1 B
3 3 r1 100 null null null
【问题讨论】:
-
您能否阐明为什么您期望结果第 3 行中第二个表中的值。其背后的逻辑是什么?
-
我分析了与住宿数据相关的 POS 数据。最后一次购买是最后入住日之后的购买,但我想放在最后入住日。
标签: google-bigquery