Sql 我需要一个查询,它提供所有表名和每天插入的记录数

Sql 我需要一个查询,它提供所有表名和每天插入的记录数,sql,sql-server,Sql,Sql Server,我有30个表,比如a,b,c,…d1,列名是id,name,updated time。列名各不相同,但更新的时间列对于所有表都是通用的。有人能帮我回答上述问题吗 您可以合并所有表,然后在更新时间列上进行聚合,例如 SELECT t.updated, COUNT(*) AS cnt FROM ( SELECT updated FROM a UNION ALL SELECT updated FROM b UNION ALL SELECT upd

我有30个表,比如a,b,c,…d1,列名是id,name,updated time。列名各不相同,但更新的时间列对于所有表都是通用的。有人能帮我回答上述问题吗

您可以合并所有表,然后在更新时间列上进行聚合,例如

SELECT
    t.updated,
    COUNT(*) AS cnt
FROM
(
    SELECT updated FROM a
    UNION ALL
    SELECT updated FROM b
    UNION ALL
    SELECT updated FROM b
    UNION ALL
    ...
) t
GROUP BY t.updated;

您可以使用公共特定列(updated_time,我假设这是一个DATETIME数据类型列)动态检索所有表,并显示每个表的每个日期的记录计数

USE TESTDB --use the schema where your tables are
GO

DECLARE @nSQL NVARCHAR(MAX)

SELECT @nSQL = COALESCE(@nSQL + 'UNION ALL ' + CHAR(10), '') +
               'SELECT ''' + TABLE_NAME + ''' AS TableName, 
                        CAST(updated_time AS DATE) [date],
                        COALESCE(COUNT(*),0) cnt                         
                  FROM ' + QUOTENAME(TABLE_NAME) + CHAR(10) +
               ' GROUP BY CAST(updated_time AS DATE) '
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE COLUMN_NAME = 'updated_time'

EXECUTE(@nSQL);
样本数据

CREATE TABLE t_tab1 (id INT, fname VARCHAR(10), updated_time DATETIME);
CREATE TABLE t_tab2 (id INT, lname VARCHAR(10), updated_time DATETIME);
CREATE TABLE t_tab3 (id INT, mname VARCHAR(10), updated_time DATETIME);
CREATE TABLE t_tab4 (id INT, addr VARCHAR(10), updated_time DATETIME);

INSERT INTO t_tab1 VALUES(1,'aaa',CAST('09/17/2017' AS DATE));
INSERT INTO t_tab1 VALUES(2,'bbb',CAST('09/17/2017' AS DATE));
INSERT INTO t_tab1 VALUES(1,'aaa',CAST('09/18/2017' AS DATE));
INSERT INTO t_tab1 VALUES(2,'bbb',CAST('09/18/2017' AS DATE));
INSERT INTO t_tab1 VALUES(3,'ccc',CAST('09/18/2017' AS DATE));
INSERT INTO t_tab2 VALUES(1,'aaa',CAST('09/18/2017' AS DATE));
INSERT INTO t_tab2 VALUES(2,'bbb',CAST('09/18/2017' AS DATE));
INSERT INTO t_tab3 VALUES(1,'ccc',CAST('09/18/2017' AS DATE));
INSERT INTO t_tab3 VALUES(2,'aaa',CAST('09/18/2017' AS DATE));
INSERT INTO t_tab3 VALUES(3,'bbb',CAST('09/18/2017' AS DATE));
INSERT INTO t_tab3 VALUES(4,'ccc',CAST('09/18/2017' AS DATE));
INSERT INTO t_tab4 VALUES(1,'aaa',CAST('09/18/2017' AS DATE));
INSERT INTO t_tab4 VALUES(2,'bbb',CAST('09/18/2017' AS DATE));
结果

TableName   date        cnt
t_tab1      2017-09-17  2
t_tab1      2017-09-18  3
t_tab2      2017-09-18  2
t_tab3      2017-09-18  4
t_tab4      2017-09-18  2

当然,您可以随时编辑查询以仅显示所需的记录。

什么是[更新时间]列的数据类型,是datetime吗?非常感谢muck ferdinand。查询工作绝对正常