select语句从另一行返回值

时间:2019-11-03 21:31:28

标签: sql select

我有一个选择查询,返回以下结果:

Transaction  Type   Value
-----------  ----   -----
1            A      Null
1            A      Null
1            B      1234
2            A      Null
2            A      Null
2            B      4321

我将如何形成它,以便将类型A中的Null值替换为类型B中的值?要获得此结果:

Transaction  Type  Value
-----------  ----  -----
1            A     1234
1            A     1234
1            B     1234
2            A     4321
2            A     4321
2            B     4321

1 个答案:

答案 0 :(得分:1)

您可以使用窗口功能:

select transaction, type, value,
       max(case when type = 'b' then value end) over (partition by transaction) as new_value
from t;

如果您只希望交易的非NULL值:

select transaction, type, value,
       max(value) over (partition by transaction) as new_value
from t;