sql - 选择语句从不同的行返回值
问题描述
我有一个返回这些结果的选择查询:
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
解决方案
您可以使用窗口函数:
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;
推荐阅读
- python - 根据熊猫组比较日期
- machine-learning - TFF 联邦学习,评估方法
- ios - 自定义委托以使用 UIView 类中的 pushViewController
- css - Pdfkit python css在aws ec2服务器上没有按预期工作
- r - RMarkdown 使列表的元素在环境中可用
- r - 计算列中重复出现的值的列,重置为新值
- uitableview - 如何删除 Xamarin iOS 中每个单元格中的默认编辑图标
- ios - 轻量级问题:所有这些 Apple 首字母缩略词实际上代表什么?
- sql - Postgres Group 通过保留先前的顺序
- mongodb - 使用 volidator 创建 mongodb 集合,然后插入 doc 错误