postgresql - 不存在日期的 Postgres 查询
问题描述
我有一个可以正常工作的查询,但没有选择不存在的日期
select
j.job_id as "Job No",
c.business_name as "Customer",
to_char(j.date_created, 'DD/MM/YYYY') as "Created Date",
to_char(min(sc.start_time), 'DD/MM/YYYY') as "Schedule Start",
to_char(max(sc.end_time), 'DD/MM/YYYY') as "Schedule End",
to_char(j.date_due, 'DD/MM/YYYY') as "Due Date"
from sampleco_jobs j
join sampleco_customers c
on j.customer_id = c.customer_id
join sampleco_schedules sc
on j.job_id = sc.job_id
where c.customer_id = 29726
group by j.job_id, c.business_name;
每个作业可能有多个计划日期,并且查询正在查找最早和最年轻的计划日期并按 job_id 分组。但是,某些作业尚未开始,并且在计划表中没有现有日期,并且不会显示在结果中。如何让这些显示在结果中?感谢任何帮助。
解决方案
空值被 max() 和 min() 函数忽略,因为它们是未知的。
您可以给 null 值 default 以便 max 和 min 可以比较它们:
select
j.job_id as "Job No",
to_char(j.date_created, 'DD/MM/YYYY') as "Created Date",
to_char(min(coalesce(sc.start_time,date'0001-01-01')), 'DD/MM/YYYY') as "Schedule Start",
to_char(max(coalesce(sc.end_time,date'9999-12-31')), 'DD/MM/YYYY') as "Schedule End",
.....
推荐阅读
- javascript - JavaScript:根据数组项中的数字重新排序数组
- python - 无法从外部进程读取 PTY(伪终端文件)
- php - 三元运算符 - 如何在 (expr1) 上添加 (expr4) ?(expr2) : (expr3)
- graphql - 如何在 GraphQL 和 Apollo 中部分模拟模式?
- git - Bitbucket 分支源插件在索引期间触发所有分支/项目的作业
- oop - 尝试在 JPA 实体之间实现低耦合
- visual-studio-2015 - 如何在 Visual Studio 中使用自创证书
- mysql - graphQL 与 Sequelize 和 MySQL 重复字段相关
- python - 使用 dask 合并数据集被证明是不成功的
- node.js - 如何在 nodejs 中以 XML 格式显示 SOAP 信封?