SQL BigQuery - вставка строк с различным диапазоном дат - PullRequest
1 голос
/ 14 января 2020

В моем SQL - BigQuery, у меня есть таблица с 3 столбцами: дата, идентификатор, количество, цена о записях продаж.

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

Я хочу добавить строки, дублирующие идентификатор, количество но Дата продолжается, а цена делится на каждый месяц в зависимости от количества (количества месяцев), например:

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

Я искал какой-то запрос, но пока не знаю, как напечатать результат каждый л oop. Не могли бы вы помочь мне решить эту проблему?

1 Ответ

1 голос
/ 14 января 2020

Ниже для BigQuery Standard 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     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...