订单号 | 客户姓名 | 电子邮件地址 | 产品 1 - 品牌 | 产品 1 - 描述 | 产品 1 - 价格 | 产品 2 - 品牌 | 产品 2 - 描述 | 产品 2 - 价格 |
---|---|---|---|---|---|---|---|---|
123 | 约翰·史密斯 | [电子邮件受保护] | 承运人 | 变频空调 | 599 | 空 | 空 | 空 |
456 | 简·史密斯 | [电子邮件受保护] | 联想 | ThinkVision 监视器 | 149 | 罗技 | 人体工学鼠标 | 79 |
嗨,我正在使用这种表/数据集来记录客户的购买记录,但他们购买的所有产品都包含在一行中。该表有 10 组这些产品品牌、产品描述、产品价格等,但我希望发生的是 从该单行中获取单独的购买信息,并使用剩余产品的详细信息创建后续行,同时仍然具有客户信息。在某些情况下,客户只会得到一件商品,因此其余列将为空。表末尾还有其他列,其中包含商品的总成本、送货地址等,我也想将其保留在将创建的新行中。
我想要实现的是这样的:
订单号 | 客户ID | 电子邮件地址 | 产品-品牌 | 产品 - 描述 | 产品 - 价格 |
---|---|---|---|---|---|
123 | 约翰·史密斯 | [电子邮件受保护] | 承运人 | 变频空调 | 599 |
456 | 简·史密斯 | [电子邮件受保护] | 联想 | ThinkVision 监视器 | 149 |
456 | 简·史密斯 | [电子邮件受保护] | 罗技 | 人体工学鼠标 | 79 |
我使用 BigQuery 一段时间了,但我只知道基本功能,所以我不确定如何去做,因为这看起来很复杂。我知道 Google Sheet 中有一个类似的功能,您可以在其中转置单元格,但这只能解决我的问题的一半。任何帮助/建议将不胜感激,谢谢!
您可以使用 UNON ALL 组合多个查询的结果集。 我没有大查询,因此无法测试,但大查询的语法应该完全相同。
SELECT
OrderID,
CustomerName,
EmailAddress,
Product1_Brand AS Product_Brand,
Product1_Description AS Product_Description,
Product1_Price AS Product_Price
FROM CustomerPurchases
WHERE Product1_Brand IS NOT NULL
UNION ALL
SELECT
OrderID,
CustomerName,
EmailAddress,
Product2_Brand AS Product_Brand,
Product2_Description AS Product_Description,
Product2_Price AS Product_Price
FROM CustomerPurchases
WHERE Product2_Brand IS NOT NULL
ORDER BY OrderID;
输出