我有一个这样的表:
null
还有第二张桌子:
price_families (Table A):
ID UPC
1 123
1 456
2 789
2 111
1 121
我想要的是用同一产品系列的不同UPC的销售额/体积值替换表B中的空值(使用表A来确定价格系列,并加入UPC)并按销售说明进行订购,音量描述(每个价格系列)。
执行此操作的最佳方法是什么?我可以在这里使用Coalesce()还是案例说明?
我的输出应该是这样:
sales_volume (Table B):
UPC sales volume
123 13.99 2.99
456 null null
121 14.99 1.99
789 31.88 22.99
111 null null
121 null null
答案 0 :(得分:2)
嗯。 。 。一种方法使用元组进行分配:
update b
set (sales, volume) = (select b2.sales, b2.volume
from b b2 join
a
on b2.upc = a.upc
where b2.sales is not null and b2.volume is not null
order by b2.sales desc, b2.volume desc
limit 1
)
where sales is null and volume is null;
编辑:
如果您只想使用select
查询:
select b.upc,
coalesce(b.sales, b2.sales) as sales,
coalesce(b.volume, b2.volume) as volume
from b left join lateral
(select b2.sales, b2.volume
from b b2 join
a
on b2.upc = a.upc
where b2.sales is not null and b2.volume is not null
order by b2.sales desc, b2.volume desc
limit 1
) b2
on 1=1;