我的数据库里有两张桌子: 1-定期服务 2--实现服务.
在第二张表中,我有服务收到的价值$和服务实现的日期. 在第一个表中,我只有计划的日期,没有值.
重点是: 有时预定服务无法完成,必须重新安排,因此实现日期可能与预定日期不同. 但是,即使这项服务没有实现,我也想知道每天预定的费用是多少. 我已经创建了一个视图(Vw_Test),如下所示:
大众测试:
SELECT
t1.date,
t1.service,
t2.value
FROM
scheduled AS t1
LEFT JOIN
realized AS t2
ON CONCAT(t1.date, t1.service) = CONCAT(t2.date, t2.service)
ORDER BY
t1.service ASC,
t2.date ASC
大众测试:
date | service | value |
---|---|---|
2023-04-01 | A | Null |
2023-04-02 | A | Null |
2023-04-03 | A | Null |
2023-04-04 | A | Null |
2023-04-05 | A | Null |
2023-04-06 | A | Null |
2023-04-07 | A | 150.80 |
2023-04-08 | A | Null |
2023-04-09 | A | Null |
2023-04-10 | A | Null |
2023-04-01 | B | Null |
2023-04-02 | B | Null |
2023-04-03 | B | 247.17 |
2023-04-04 | B | Null |
2023-04-05 | B | Null |
2023-04-06 | B | Null |
2023-04-07 | B | Null |
2023-04-08 | B | 75.12 |
2023-04-09 | B | Null |
2023-04-10 | B | Null |
我正在try 使用下一个非Null值填充Null值,并在每个服务的Non-Null值之后保留Null,如下表所示:
date | service | value |
---|---|---|
2023-04-01 | A | 150.80 |
2023-04-02 | A | 150.80 |
2023-04-03 | A | 150.80 |
2023-04-04 | A | 150.80 |
2023-04-05 | A | 150.80 |
2023-04-06 | A | 150.80 |
2023-04-07 | A | 150.80 |
2023-04-08 | A | Null |
2023-04-09 | A | Null |
2023-04-10 | A | Null |
2023-04-01 | B | 247.17 |
2023-04-02 | B | 247.17 |
2023-04-03 | B | 247.17 |
2023-04-04 | B | 75.12 |
2023-04-05 | B | 75.12 |
2023-04-06 | B | 75.12 |
2023-04-07 | B | 75.12 |
2023-04-08 | B | 75.12 |
2023-04-09 | B | Null |
2023-04-10 | B | Null |
这可以通过PostgreSQL实现吗? 我已经try 过text中提到的ARRAY_AGG 和JSONB_AGG text 但结果与大众测试相同.
谢谢你的帮助