2017-12-03 245 views
2

我需要编写一些SQL代码的帮助,并且我发现的所有答案都似乎假设了静态数据并设置了需要左连接的开始和结束日期。这是不同的。SQL循环从各种开始日期和结束日期生成许多行

设置

我在谷歌板的表,其基本上

客户,广告活动,日期,结束日期,DAILY_BUDGET

客户端1,广告活动1,2017年1月2日, 2017年1月12日,10.00

客户端2,广告活动1,2017年1月3日,2017年2月15日,34.09

这个列表总是与新客户,新的活动等日益

我需要做的

我想用SQL(我已经连接和传输部分向下借此输出至BigQuery ),使得最终的结果是

客户端1,广告活动1,2017年1月2日,10.00

客户端1,广告活动1,2017年1月3日,10.00

客户端1,广告活动1 ,2017-0 1-04,10.00

客户端1,广告活动1,2017年1月5日,10.00

与SO ON

客户端2,广告活动1,2017年1月3日,34.09

客户端2,广告活动1,2017年1月4日,34.09

客户端2,广告活动1,2017年1月5日,34.09

客户端2,广告活动1,2017年1月6日,34.09

章等

基本上它遍历每一个新的生产线,每个日期创建所有必需的新行(这就是我需要帮助,如何生成关闭数据行)

任何帮助将不胜感激!

回答

2

下面是BigQuery的标准SQL

#standardSQL 
SELECT Client, Campaign, Day, Daily_Budget 
FROM `project.dataset.table`, 
UNNEST(GENERATE_DATE_ARRAY(Start_Date, End_Date)) Day 

您可以测试/上面使用从你的问题虚拟数据

#standardSQL 
WITH `project.dataset.table` AS (
    SELECT 'Client 1' Client, 'Campaign 1' Campaign, DATE '2017-01-02' Start_Date, DATE '2017-01-12' End_Date, 10.00 Daily_Budget UNION ALL 
    SELECT 'Client 2', 'Campaign 1', DATE '2017-01-03', DATE '2017-02-15', 34.09 
) 
SELECT Client, Campaign, Day, Daily_Budget 
FROM `project.dataset.table`, 
UNNEST(GENERATE_DATE_ARRAY(Start_Date, End_Date)) Day 
+0

太感谢你了,正是我一直在寻找的游戏! – Jeff

相关问题