简体   繁体   English

SQL查询的简写形式,用于按天计算多个表中的记录

[英]Shorthand for SQL query to count records by day across many tables

I am trying to create a table to validate my data across many different tables within a dataset. 我试图创建一个表来验证我在数据集中许多不同表中的数据。 I use the following SQL query to do this, but is there any way to save time copying in the names of all tables within my dataset, either in the top level SELECT statement or the sub queries? 我使用以下SQL查询来执行此操作,但是是否有任何方法可以节省数据集内所有表的名称(在顶级SELECT语句或子查询中)的复制时间?

SELECT Date, records_table1, records_table2...

FROM

(SELECT RowDate as Date, Count(RowDate) AS records_table1 FROM [project:dataset.table1] GROUP BY Date),

(SELECT RowDate as Date, Count(RowDate) AS records_table2 FROM [project:dataset.table2] GROUP BY Date),

...

You can also use union all : 您也可以使用union all

select RowDate, sum(table1) as records_table1, sum(table2) as records_table2
from (select RowDate, 1 as table1, 0 as table2
      from [project:dataset.table1] 
      union all
      select RowDate, 0, 1
      from [project:dataset.table2] 
     ) t
group by RowDate;
select a.*, b.records_table2 from 
(SELECT RowDate as Date, Count(RowDate) AS records_table1 FROM [project:dataset.table1] GROUP BY Date)a
full join 
(SELECT RowDate as Date, Count(RowDate) AS records_table2 FROM [project:dataset.table2] GROUP BY Date)b 
on a.[Date]=b.[Date]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM