postgresql 案例结束/自连接postres sql

fruv7luv  于 2023-02-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(133)

我正在尝试处理同一个表中的数据。
输入:

    • 表格**
id sort value   
1   1     1   
2   1     8    
3   2     0    
4   1     2

我想要实现的是获取每个id的第一个遇到的值,所有的值都等于它的排序,并且这是按id排序的。
产出

    • 表格**
id sort value new  
1   1     1    1    
2   1     8    1      
3   2     0    0      
4   1     2    1

我尝试自连接表,但总是得到relation not found。我尝试使用case语句,但我不知道如何连接到同一个表,我得到同样的错误,relation not found。

pqwbnv8z

pqwbnv8z1#

SQL的美妙之处在于,许多需求(包括您的需求)可以用非常类似的方式进行详细描述,它们最终会被编码:

with t(id, sort, value   ) as (values
(1,   1,     1),   
(2,   1,     8),    
(3,   2,     0),    
(4,   1,     2)
)
select t.*
     , first_value(value) over (partition by sort order by id) as "new"
from t
order by id

| 身份证|分类|价值|新的|
| - ------|- ------|- ------|- ------|
| 1个|1个|1个|1个|
| 第二章|1个|八个|1个|
| 三个|第二章|无|无|
| 四个|1个|第二章|1个|
fiddle

相关问题