对于日历年的每一天,我需要检查记录的状态,并根据状态将其标记为1或0(已发布= 1,否则为0)。状态在每个记录的数组中。
我将具有记录和数组的表加入到具有日历的表中,该日历包含给定年份的每一天的日期。
`select
cdate,
YYYYMM,
_id,
createdat,
case when cdate>=statushistory.date and <statushistory.date and statushistory.status="Published" then 1 else 0 end as active,
statushistory
from bigquery.calendar
join rs.listings on extract(date from createdat)<=cdate, unnest(statushistory)
where _id ="HGk5HMd6ZxmSRgEJ6"
;`
我被困住了。我无法引用statushistory
:statushistory.status
和statushistory.date
中的特定字段。当我尝试引用它们时,它给了我它们在数组中的错误。
即使我知道如何引用它们,也需要将cdate
放在正确的两个statushistory.date
之间,以确定状态。
上面提到的_id具有4个状态和4个日期。
我的目标是在cdate
答案 0 :(得分:1)
我不清楚您想做什么。但是,我怀疑这与获取每个日期的状态有关。
如果是这样,您可以在子查询中unnest
:
select c.cdate, c.YYYYMM, l._id, l.createdat,
(select sh.status
from unnest(l.statushistory) sh
where c.cdate >= sh.date and
c.cdate <= sh.date
) as status_on_date
from bigquery.calendar c join
rs.listings l
on extract(date from l.createdat)<= c.cdate
where l._id = 'HGk5HMd6ZxmSRgEJ6'