2016-11-16 10 views
0

Ich habe eine SQL-Abfrage unter dem ich eine Zählung zu bekommen versuchen (*) alle TabellenTablename mit insgesamt rowcount

select Outer.Table_Name, Column_Name, sub.rowcount 
from INFORMATION_SCHEMA.columns Outer 
-- left join (select sub.TableName, count(*) As rowcount from LeadBase)sub 
-- sub.TableName = Outer.Table_Name 
where Table_Name = 'LeadBase' and Column_Name in ('CreatedOn','ModifiedOn') 
order by 2 

Aber natürlich werde die oben nicht funktionieren, weil Sie den Tabellennamen in der Verwendung kippen Unterabfrage (auskommentiertes Bit), gibt es es sowieso, um es zu tun, so habe ich das Ergebnis der Zählung (*) entlang dem Tabellenname von der Außenabfrage?

Antwort

0
SELECT  SCHEMA_NAME(A.schema_id) + '.' + A.Name, SUM(B.rows) AS 'RowCount' 

sys.objects FROM A INNER sys.partitions B = ON A.object_id B.object_id WHERE A.type = ‚U'GROUP BY A.schema_id, A.Name

+0

das sieht vielversprechend bekommen, werde ich nach dem Spiel um zurück zu Ihnen mit der Abfrage – abs786123

+0

Hallo es funktioniert, aber es von vielen als manchmal in der Partitionstabelle Multiplikation , die object_ID erscheint mehr als einmal. Kann eine max() eine der IDs bringen, würdest du wissen welche zu verwenden? – abs786123

+0

Dann nur alle Zeilen von mehreren object_ID in der Partitionstabelle summieren – Mansoor

0

JOIN zu Managed sortieren sie durch Ihre Idee Blick auf die Partitionstabelle

SELECT DB_NAME() AS [Current Database], sc.name, ta.name TableName, 
SUM(pa.rows) RowCnt 
FROM sys.tables ta 
INNER JOIN sys.partitions pa 
ON pa.OBJECT_ID = ta.OBJECT_ID 
INNER JOIN sys.schemas sc 
ON ta.schema_id = sc.schema_id 
WHERE pa.index_id IN (1,0) and Type = 'U' 
GROUP BY sc.name,ta.name 
ORDER BY SUM(pa.rows) DESC