Sql 在(分区)上的第_行编号()上左连接

Sql 在(分区)上的第_行编号()上左连接,sql,google-bigquery,left-join,partitioning,Sql,Google Bigquery,Left Join,Partitioning,我有两个表,一个包含销售信息,另一个包含发货信息。对于每个订单,这两个表都处于项目级别。换句话说,即使订单中有多个项目,两个表中的每个记录的数量也仅为1 表1 订单号 产品代码 成本 通货 100 aa $10 美元 100 aa $10 美元 101 bb $15 美元 下面考虑一下 select order_number, product_code, cost, currency, carrier_service, shipment_cost from (select *, row_numb

我有两个表,一个包含销售信息,另一个包含发货信息。对于每个订单,这两个表都处于项目级别。换句话说,即使订单中有多个项目,两个表中的每个记录的数量也仅为1

表1

订单号 产品代码 成本 通货 100 aa $10 美元 100 aa $10 美元 101 bb $15 美元 下面考虑一下

select order_number, product_code, cost, currency, carrier_service, shipment_cost
from (select *, row_number() over(partition by product_code) rn from table1) t1
left join (select *, row_number() over(partition by product_code) rn from table2) t2
using(order_number, product_code, rn)
order by order_number, product_code     
如果应用于问题中的样本数据,则输出为


请注意:尽管我在代码中使用了
over(按产品划分\u代码)
,但我觉得应该是
over(按订单划分\u编号)
-但根据您的具体问题还不清楚-因此,在解决您问题的焦点左连接问题时,我将由您决定

首先,它仍然不起作用,但是使用您的建议,在
订单号上进行分区
并按产品代码添加
订单
生成了正确的结果结果!