提问人:toch 提问时间:10/5/2023 最后编辑:toch 更新时间:10/5/2023 访问量:35
Postgresql :如何使用SQL查询重新设计遗留表?
Postgresql : How to rework legacy table with SQL query?
问:
我从一个(旧版)表中设置了以下结果:
我想要首先获取第一个 LABEL 并设置为另一列,如下所示:IF ARTCO = '999999' AND LINETYP ='C'
我试过 ROW_NUMBER() OVER (PARTITION BY ...),但它不起作用。 有什么提示吗?我没有任何想法去做。谢谢
我想通过 ARTCO 获得一些分区,但我的问题是“999999”代码不允许按 ARTCO 分组,然后获取 LINETYP 'C' 的第一个 LABEL
SELECT
"NUM",
"TYPE",
"LINENB",
"ARTCO",
"LABEL",
"LINETYP",
ROW_NUMBER() OVER (PARTITION BY "NUM","TYPE","ARTCO" ) AS RowNum
FROM my_table t1
where "NUM" = '015662'
order by "NUM","TYPE","ARTCO"
然后,我得到:
那么问题来了,这是没有办法做到的?
答:
0赞
Ale_Bianco
10/5/2023
#1
您可以通过使用带有语句的子查询来获得所需的结果来实现此目的。下面是一个示例,说明如何做到这一点: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';
评论