【发布时间】:2019-09-08 16:20:41
【问题描述】:
我在 postgres 9.4 上。我想查询我的adjustments 表以获取每个字段的最新调整。一些adjustments 可以调整多个字段。
示例 1
+---------------+-------------+----------------+---------------+
| available_qty | on_hand_qty | backstock_qty | date |
+---------------+-------------+----------------+---------------+
| null | 2 | null | 2018-01-03 |
| 1 | null | 10 | 2018-01-04 |
| null | null | 2 | 2018-01-01 |
| 3 | 3 | null | 2018-01-02 |
+---------------+-------------+----------------+---------------+
...查询每个字段的最新调整将导致:
+---------------+-------------+----------------+---------------+
| available_qty | on_hand_qty | backstock_qty | date |
+---------------+-------------+----------------+---------------+
| null | 2 | null | 2018-01-03 |
| 1 | null | 10 | 2018-01-04 |
+---------------+-------------+----------------+---------------+
示例 2
+---------------+-------------+----------------+---------------+
| available_qty | on_hand_qty | backstock_qty | date |
+---------------+-------------+----------------+---------------+
| null | 2 | null | 2018-01-03 |
| 1 | null | null | 2018-01-04 |
| null | null | 2 | 2018-01-01 |
| null | null | 3 | 2018-01-02 |
| 3 | null | null | 2018-01-02 |
| null | 4 | null | 2018-01-01 |
+---------------+-------------+----------------+---------------+
...查询每个字段的最新调整将导致:
+---------------+-------------+----------------+---------------+
| available_qty | on_hand_qty | backstock_qty | date |
+---------------+-------------+----------------+---------------+
| null | 2 | null | 2018-01-03 |
| 1 | null | null | 2018-01-04 |
| null | null | 3 | 2018-01-02 |
+---------------+-------------+----------------+---------------+
我可以通过大量UNION 查询来实现这一点:
(SELECT * FROM adjustments WHERE available_qty IS NOT NULL ORDER BY date DESC LIMIT 1)
UNION
(SELECT * FROM adjustments WHERE on_hand_qty IS NOT NULL ORDER BY date DESC LIMIT 1)
UNION
(SELECT * FROM adjustments WHERE backstock_qty IS NOT NULL ORDER BY date DESC LIMIT 1)
...但是这可以通过一个查询来实现吗?实际上,这里可以有很多领域。提前致谢!
【问题讨论】:
-
@GrzegorzSkibinski 谢谢,快到了!有没有办法同时返回每个对应字段的日期值?
-
理想情况下,我希望返回实际的
adjustments行 -
我把整个事情放在下面的答案中。
标签: sql postgresql postgresql-9.4