【发布时间】:2017-08-17 07:50:22
【问题描述】:
我目前编写了一个返回以下内容的查询
+-----------+--------+--------+
| client_id | Period | Status |
+-----------+--------+--------+
| 2378 | 1 | Paid |
| 2378 | 2 | Paid |
| 2378 | 4 | Paid |
| 2378 | 5 | Paid |
| 2378 | 6 | Frozen |
| 2378 | 10 | Paid |
+-----------+--------+--------+
但是,我希望它包括我没有任何数据的时期。 例如,第 3 期和第 7-9 期。通过填写上一时期发生的事情。 例如,第 3 期将变为已付款。像这样:
+-----------+--------+--------+
| client_id | Period | Status |
+-----------+--------+--------+
| 2378 | 1 | Paid |
| 2378 | 2 | Paid |
| 2378 | 3 | Paid |
| 2378 | 4 | Paid |
| 2378 | 5 | Paid |
| 2378 | 6 | Frozen |
| 2378 | 7 | Frozen |
| 2378 | 8 | Frozen |
| 2378 | 9 | Frozen |
| 2378 | 10 | Paid |
+-----------+--------+--------+
请注意,我确实有超过 1 个客户 ID,我的目的只是填写我在数据中为该 Client_Id 提供的最小和最大期间之间的任何空白。 此外,每个客户的时间段也因客户而异。例如,客户端 1 的最大周期为 6,客户端 2 的最大周期为 8。
有谁知道可以做到这一点的方法吗?
我遇到了以下稍微相似的问题,除了我的情况我觉得我需要在不同的 client_id 上编写一个循环? Example I found
【问题讨论】:
-
也许你可以
CREATE TEMP TABLES并建立一个包含所有可能周期的表格,然后做一些聪明的JOIN或UNION的东西。但对我来说听起来很难