gpt4 book ai didi

mysql - SQL BigQuery - 插入具有不同日期范围的行

转载 作者:行者123 更新时间:2023-11-29 09:25:09 25 4
gpt4 key购买 nike

在我的 SQL - BigQuery 中,我有一个包含 3 列的表:关于销售记录的日期、ID、数量、价格。

ID   | Date        | Quantity|Price
A123 | 10/30/2010 | 3 |600,000
B567 | 10/30/2010 | 6 |900,000

我想添加行重复 ID、数量,但日期继续,价格根据数量(月数)划分为每个月,如下所示

ID   | Date        | Quantity|Price
A123 | 10/30/2010 | 3 |200,000
A123 | 11/30/2010 | 3 |200,000
A123 | 12/30/2010 | 3 |200,000
B567 | 10/30/2010 | 6 |150,000
B567 | 11/30/2010 | 6 |150,000
B567 | 12/30/2010 | 6 |150,000
B567 | 01/30/2011 | 6 |150,000
B567 | 02/28/2011 | 6 |150,000
B567 | 03/30/2011 | 6 |150,000

我搜索了一些关于 while 的查询,但我不知道如何在每个循环中打印结果。你能帮我解决这个问题吗?

最佳答案

以下适用于 BigQuery 标准 SQL

#standardSQL
SELECT id, DATE_ADD(date, INTERVAL delta MONTH) date, quantity, price / quantity price
FROM `project.dataset.table`,
UNNEST(GENERATE_ARRAY(0, quantity - 1)) delta
ORDER BY id, date

您可以使用问题中的示例数据来测试、玩上面的内容,如下例所示

#standardSQL
WITH `project.dataset.table` AS (
SELECT 'A123' id, DATE '2010-10-30' date, 3 quantity, 600000 price UNION ALL
SELECT 'B567', '2010-10-30', 6, 900000
)
SELECT id, DATE_ADD(date, INTERVAL delta MONTH) date, quantity, price / quantity price
FROM `project.dataset.table`,
UNNEST(GENERATE_ARRAY(0, quantity - 1)) delta
ORDER BY id, date

结果

Row id      date        quantity    price    
1 A123 2010-10-30 3 200000.0
2 A123 2010-11-30 3 200000.0
3 A123 2010-12-30 3 200000.0
4 B567 2010-10-30 6 150000.0
5 B567 2010-11-30 6 150000.0
6 B567 2010-12-30 6 150000.0
7 B567 2011-01-30 6 150000.0
8 B567 2011-02-28 6 150000.0
9 B567 2011-03-30 6 150000.0

关于mysql - SQL BigQuery - 插入具有不同日期范围的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59726863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com