我用的SQL Server。A列对应2个或2个以上的B列值,根据C列值的大小,取最大值对应的B列值更新到D列。若A列对应B列1个值,则D列等于B列。图中D列是我的示意结果。
补充:如果数量相等,取订单行中第一个值
先用开窗函数,按始发城市分组,取出货量最大的一行,得到对应的目的城市,然后用始发城市关联到原表上即可
select b.始发城市,b.目的城市,b.货量,a.目的城市 as 目的城市_修正 from
(select 始发城市,目的城市 from
(select 始发城市,目的城市,row_number()over(partition by 始发城市 order by 货量 desc) rn from 原表 ) as a
where a.rn=1) as a1,原表 b
where a1.始发城市=b.始发城市