【发布时间】:2020-10-15 10:02:22
【问题描述】:
数据结构说明
假设我们有一个订单项目表(即一行代表一个订单项目)。每个订单项都有product_type(“A”或“B”)、amount 和currency。
一份订单 (order_id) 可以包含 1..4 个订单项目。在一个订单中,可以有一种货币(这样的订单由 1..2 个订单项目组成)或两种货币(这样的订单由 2..4 个订单项目组成)。
我需要将其转换为订单表(即一行代表一个订单)。我是SQL window functions 的新手,所以任何提示都将不胜感激。
示例
原始数据结构:
| order_id |产品类型 |金额 |货币 | | 1 |一个 | 2 |美元 | | 1 |一个 | 1 |欧元 | | 1 |乙| 6 |美元 | | 1 |乙| 5 |欧元 | | 2 |一个 | 7 |美元 | | 2 |乙| 5 |美元 | | 2 |乙| 3 |加元 | | 3 |一个 | 2 |美元 | | 3 |乙| 4 |澳元 | | 4 |一个 | 1 |新西兰元 | | 4 |乙| 2 |新西兰元 | | 5 |一个 | 8 |欧元 |目标数据结构:
| order_id | a_amount1 | a_cur1 | a_amount2 | a_cur2 | b_amount1 | b_cur1 | b_amount2 | b_cur2 | | 1 | 2 |美元 | 1 |欧元 | 6 |美元 | 5 |欧元 | | 2 | 7 |美元 | | | 5 |美元 | 3 |加元 | | 3 | 2 |美元 | | | 4 |澳元 | | | | 4 | 1 |新西兰元 | | | 2 |新西兰元 | | | | 5 | 8 |欧元 | | | | | | |【问题讨论】:
标签: sql pivot window-functions