我有一张这样的桌子:
price_families (Table A):
ID UPC
1 123
1 456
2 789
2 111
1 121
和第二个表:
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
我想要的是将表B中的空值替换为同一产品系列的不同UPC的销售额/销量值(使用表A确定价格系列,加入UPC),并按销售说明、销量说明(针对每个价格系列)进行排序。
执行此操作的最佳方式是什么?我可以在这里使用coalesce(),或者使用case语句吗?
我的输出应该是这样的:
output (Table C):
UPC sales volume
123 13.99 2.99
456 13.99 2.99
121 14.99 1.99
789 31.88 22.99
111 31.88 22.99
121 13.99 2.99
发布于 2019-04-02 04:47:30
嗯。。。一种方法使用元组进行赋值:
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;
https://stackoverflow.com/questions/55463276
复制相似问题