• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

SQL循环从各种开始日期和结束日期生成许多行

sql 来源:Jeff 3次浏览

我需要编写一些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

章等

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

任何帮助将不胜感激!

===========解决方案如下:

下面是BigQuery的标准SQL

<code class="prettyprint-override">#standardSQL 
SELECT Client, Campaign, Day, Daily_Budget 
FROM `project.dataset.table`, 
UNNEST(GENERATE_DATE_ARRAY(Start_Date, End_Date)) Day 
</code>

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

<code class="prettyprint-override">#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 
</code>

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)