首页 > 解决方案 > 如何实现基于单条记录的多条记录输出

问题描述

我有一个表“经理”,其中包含如下数据

在此处输入图像描述

我期待如下输出

在此处输入图像描述

或我期待的另一种输出格式是 在此处输入图像描述

条件是经理 1001 于 2018 年加入,结束日期为 9999,因此他在 2018 年、2019 年和 2020 年活跃

经理1004于2018年加入,同年离开公司,所以只在2018年活跃

请帮助我如何实现这一目标

标签: sqlgoogle-bigquery

解决方案


建立一个年份列表并JOIN使用它:

SELECT manager_id, yearnum, 'Active' AS status
FROM UNNEST(GENERATE_ARRAY(2018, 2020)) AS yearnum
JOIN managers ON yearnum BETWEEN EXTRACT(year FROM eff_start_date)
                             AND EXTRACT(year FROM eff_end_date)

推荐阅读