2014-01-27 3 views
-1

Мне нужно получить подсчет количества строк таблицы в sql вместе с минимальной датой (самая ранняя запись) и максимальной (последняя запись). Может кто-нибудь помочь мне, как это можно сделать в одном запросе?Sql Server Count of Tables

Задача состоит в том, чтобы получить минимальную и максимальную дату, поскольку идея состоит в том, чтобы иметь информацию о таблице, что у нее есть диапазон дат от того места, где мы можем сделать необходимую операцию.

Output:- 
DBName Table_name Count Min Max 

min-table first record comes in 2012-01-03 
max-table last record comes in 2013-01-03 
+2

вы пробовали минимальные и максимальные методы агрегации? или что вы пробовали до сих пор? –

+0

Какая СУБД вы используете? Postgres? Oracle? –

ответ

0
SELECT * 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE LIKE 'BASE%' AND TABLE_NAME NOT LIKE 'sys%' 

Этот запрос возвращает все таблицы. Вы можете использовать динамический запрос для получения каждой таблицы и подсчета строк.

0

Вы можете получить дату первой и последней записи, если у вас есть поле «Дата» во всей таблице.

Вы можете использовать этот запрос

Exec sp_MSforeachtable ' Select Count(*),Min(DateField),Max(DateField) From ? ' 

И для записи всех таблицы использовать этот запрос:

Select 
    S.name + '.' + T.name As TableName , 
    SUM(P.rows) As RowCont 

From sys.tables As T 
    Inner Join sys.partitions As P On (P.OBJECT_ID = T.OBJECT_ID) 
    Inner Join sys.schemas As S On (T.schema_id = S.schema_id) 
Where 
    (T.is_ms_shipped = 0) 
    AND 
    (P.index_id IN (1,0)) 
    And 
    (T.type = 'U') 

Group By S.name , T.name