【问题标题】:SQL BigQuery - Insert rows with different date-rangeSQL BigQuery - 插入具有不同日期范围的行
【发布时间】:2020-01-14 02:45:53
【问题描述】:

在我的 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 的查询,但我不知道如何在每个循环中打印结果。你能帮我解决这个问题吗?

【问题讨论】:

    标签: mysql sql-server google-bigquery


    【解决方案1】:

    以下是 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     
    

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 2017-04-27
      相关资源
      最近更新 更多