在查询中使用相同的表但具有不同的日期

时间:2018-05-30 11:10:44

标签: sql google-bigquery

我正在尝试使用今年数据和去年数据创建报告。我目前正在更改此查询中的日期:

SELECT TransactionDate, Source, Medium, Campaign, AdContent,
       Keyword, Country, Device, Region,
       ROUND(SUM (Revenue),2) AS Equity_Revenue,
       ROUND(SUM (Sales),2) Equity_Sales,
FROM (TABLE_DATE_RANGE([analytics.order_attribution_], TIMESTAMP('2018-02-26'), TIMESTAMP('2018-03-04')))

WHERE ReportType = 'Daily Equity Report' AND Channel = 'Email'
GROUP BY TransactionDate, Source, Medium, Campaign, AdContent,
         Keyword, Country, Device, Region,

ORDER BY Equity_Revenue DESC;

并更改日期。是否可以在下面添加相同的查询,以便我可以更改日期并运行查询一次

1 个答案:

答案 0 :(得分:2)

您可以使用动态日期范围而不是TABLE_DATE_RANGE的固定日期,这样您就不必编辑查询,以便报告向您显示最新信息。这是LegacySQL中的一个示例,它显示了过去7天的数据:

FROM (TABLE_DATE_RANGE([analytics.order_attribution_], 
DATE_ADD(CURRENT_TIMESTAMP(), -7, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')))

您还可以将两个字符串组合在一起,以便同时获取所需的周数。

如果你想改变你对StandardSQL的追求,你可以这样做,在那里我拉了两个星期,一个是上周,另一个是去年:

SELECT * 
FROM `analytics.order_attribution_*`
WHERE parse_DATE('%y%m%d', _table_suffix) 
   BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AND 
   DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY) OR   parse_DATE('%y%m%d', _table_suffix)
   BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 372 DAY) AND DATE_SUB(CURRENT_DATE(), INTERVAL 366 DAY)