2017-12-03 310 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

相關問題