根据另一列的值查询列

维彭德拉·辛格(Vipendra Singh)

嗨,我有一个这样的表结构

id-rank id name  value    rank
  1-1   1  abc somevalue1  1
  1-2   1  abc somevalue2  2
  1-3   1  abc somevalue3  3
  2-1   2  abc somevalue4  1
  3-1   3  abc somevalue5  1

这里的id-rank是id和rank的串联。现在,如果等级大于1(例如2),那么我想提取ID等级1-1(即somevalue1)的值列数据。

这是我写的sql

select *
case when rank > 1 then (select value where id-rank = concat(id,'-',rank-1) from table)
else ''
from table

预期输出为:

id-rank id name  value    rank new_value
  1-1   1  abc somevalue1  1
  1-2   1  abc somevalue2  2   somevalue1  
  1-3   1  abc somevalue3  3   somevalue2  
  2-1   2  abc somevalue4  1
  3-1   3  abc somevalue5  1

我当前的输出是

id-rank id name  value    rank new_value
  1-1   1  abc somevalue1  1
  1-2   1  abc somevalue2  2   null
  1-3   1  abc somevalue3  3   null
  2-1   2  abc somevalue4  1
  3-1   3  abc somevalue5  1

但是我得到的是new_value列中的null。我猜这是因为它仅比较相邻列。我是sql的新手,请告诉我是否有人对此有解决方案。

提前致谢

Yogesh Sharma

您可以使用lag()

select t.*, prev_val
      (case when rank > 1 then prev_val end) as new_value
from (select t.*, 
            lag(value) over (partition by id order by rank) as prev_val
      from table t
     ) t;

编辑:如果您正在寻找特定的先前值,那么lag()就足够了。

select t.*, 
       lag(value) over (partition by id order by rank) as new_value
from table t;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据另一列更改一列的值

来自分类Dev

根据另一列的值添加一列

来自分类Dev

根据另一列的条件值绘制列的值?

来自分类Dev

查询以根据另一列的最小值和客户 ID 返回值?

来自分类Dev

使用Google查询作为数组公式,根据另一列中的信息对一列中的值求和

来自分类Dev

SQL根据另一列的值选择列

来自分类Dev

根据Postgres中的另一列设置列的值?

来自分类Dev

猪根据另一列中的值添加列

来自分类Dev

根据另一列从列中检索值

来自分类Dev

根据R中另一列的值选择列

来自分类Dev

根据另一列的值填充CSV列

来自分类Dev

根据另一列查找通用列值

来自分类Dev

根据另一列的值创建新列

来自分类Dev

熊猫根据另一列的值移动列数据

来自分类Dev

根据另一列熊猫的值添加新列

来自分类Dev

根据另一列的值更改相邻列的值

来自分类Dev

根据另一列的值创建新列

来自分类Dev

pandas - 根据另一列更改列中的值

来自分类Dev

根据另一列中的值创建新列

来自分类Dev

根据另一列(浮动)更改列(分类)值

来自分类Dev

如何根据另一列中的值填充另一列中的值?

来自分类Dev

根据与另一列不同的值对值进行计数

来自分类Dev

熊猫,根据另一列的值减去值

来自分类Dev

根据另一列求和唯一值

来自分类Dev

根据另一列中的重复值过滤一列中的唯一值

来自分类Dev

根据来自另一列的一组值对一列的值求和

来自分类Dev

根据另一列具有输入数据框的值替换一列的值

来自分类Dev

根据另一列的值复制一列的值

来自分类Dev

DAX。根据另一列的最大值获取一列的值