Postgresql:如何使用 SQL 查询重写旧表?

问题描述 投票:0回答:1

我从一个(旧)表中得到了以下结果集:

我想先获取第一个以下标签

IF ARTCO = '999999' AND LINETYP ='C'
并设置到另一列,如下所示:

我已经尝试过 ROW_NUMBER() OVER (PARTITION BY ...) 但它不起作用。 有什么提示可以做到吗?我没有任何想法去做。谢谢

sql postgresql partition
1个回答
0
投票

您可以通过使用带有

CASE
语句的子查询来实现此目的,以获得所需的结果。以下是如何做到这一点的示例:

UPDATE your_table t1
SET t1.NEXT_LABEL = (
    SELECT TOP 1 t2.LABEL
    FROM your_table t2
    WHERE t2.ARTCO = '999999' AND t2.LINETYP = 'C' AND t2.DATE > t1.DATE
    ORDER BY t2.DATE ASC
)
WHERE t1.ARTCO = '999999' AND t1.LINETYP = 'C';
© www.soinside.com 2019 - 2024. All rights reserved.