sql - 如何实现基于单条记录的多条记录输出
问题描述
我有一个表“经理”,其中包含如下数据
我期待如下输出
条件是经理 1001 于 2018 年加入,结束日期为 9999,因此他在 2018 年、2019 年和 2020 年活跃
经理1004于2018年加入,同年离开公司,所以只在2018年活跃
请帮助我如何实现这一目标
解决方案
建立一个年份列表并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)
推荐阅读
- android - 如何正确地主题化活动并确定哪些属性是错误的?
- php - 不能在 Twig 中多次包含模板
- javascript - 在 HTML 表格中的 X 行之后注入一行
- cluster-analysis - 聚类太慢,7000 个点需要 2 分钟才能加载
- postgresql - 从 Postgres 触发 AWS lambda
- linux - Alpine linux终端鼠标滚动较少的命令
- php - PHP调用SQL Server SP返回数据、输出参数和返回值
- sql - 尝试保存视图而不更改我的查询
- javascript - 使用入口点和输出配置 Laravel mix.webpackConfig({})
- google-bigquery - 如何在新的 Google BigQuery Web UI 中刷新数据集/资源?