我有一个数据库,可以跟踪不同数据库中不同模式中每个表的行数。这些细节每晚更新,并为每张桌子保留1年的数据。
我需要一个查询,对于给定的数据库和模式,我可以得到每个表的第一行和最后一行计数以及表名和日期。
例如:
数据库看起来像这样。
DateTime TableName RowCount
2017/05/22 22:00 TableA 5000
2016/10/12 22:00 TableA 2500
2016/05/22 22:00 TableA 1000
2017/05/22 22:00 TableB 10000
2016/10/12 22:00 TableB 7500
2016/05/22 22:00 TableB 3000
2017/05/22 22:00 TableC 15000
2016/10/12 22:00 TableC 12500
2016/05/22 22:00 TableC 10000
我需要一个看起来像这样的结果
--------------------------------------------------------------------------------------
TableName | Last Row Date | Last Row Count | First Row Date | First Row Count |
---------------------------------------------------------------------------------------
TableA | 2016/05/22 22:00 | 1000 | 2017/05/22 22:00 | 5000 |
TableB | 2016/05/22 22:00 | 3000 | 2017/05/22 22:00 | 10000 |
TableC | 2016/05/22 22:00 | 10000 | 2017/05/22 22:00 | 15000 |
我尝试了很多变种,包括CTE和联盟,但是无法得到我需要的结果。 非常感谢任何帮助。
答案 0 :(得分:0)
此查询有效:
select s.table_name,
last_row.date_time last_date,
last_row.row_count last_count,
first_row.date_time first_date,
first_row.row_count first_count
from (
select distinct table_name
from history_table
) s,
(
select h.date_time,
h.row_count,
h.table_name
from history_table h
where h.date_time = (
select max(h2.date_time)
from history_table h2
where h2.table_name = h.table_name
)
) last_row,
(
select h.date_time,
h.row_count,
h.table_name
from history_table h
where h.date_time = (
select min(h2.date_time)
from history_table h2
where h2.table_name = h.table_name
)
) first_row
where last_row.table_name = s.table_name
and first_row.table_name = s.table_name