我正在使用SQL Server 2008并希望从数据库中的所有表中获取列的总行数。为特定列和列值计算所有表的行
这是我的样本数据
表1
T1Id Name
1 XCV
2 ASD
3 GHJ
表2
T2Id T1Id Name
1 1 TYU
2 1 BBB
3 2 LLL
4 1 JJJ
5 1 LKM
6 2 POI
表3
T3Id T1Id Name
1 3 DDS
2 3 BSS
3 2 SQA
4 2 FWF
5 1 IKM
6 2 PLO
我有表4,但也不想在结果中添加数
我想
SELECT TOP (100) PERCENT ta.name AS TableName, SUM(pa.rows) AS RowCnt
FROM sys.tables AS ta LEFT OUTER JOIN
sys.partitions AS pa ON pa.object_id = ta.object_id LEFT OUTER JOIN
sys.schemas AS sc ON ta.schema_id = sc.schema_id LEFT OUTER JOIN
INFORMATION_SCHEMA.COLUMNS ON ta.name = INFORMATION_SCHEMA.COLUMNS.TABLE_NAME
WHERE (ta.is_ms_shipped = 0) AND (pa.index_id IN (1, 0)) AND (INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME = N'T1Id') AND
(ta.name <> N'Table4')
GROUP BY sc.name, ta.name
HAVING (SUM(pa.rows) > 0)
ORDER BY RowCnt DESC
上面的SQL给我造成
TableName RowCnt
XCV 5
ASD 5
GHJ 2
,但我只想得到XCV(Table1和T1Id = 1)记录计数。 如何使用上述查询或任何其他建议来做到这一点?
预期结果
Name RCount
XCV 5
编辑:
我有我的数据库了200多个表和它所有的表T1Id, 我的目标是找到T1Id = 1的所有表中的计数我不想在结果中包含表4。
你想获得一个与最大记录?这就是为什么你的例子中预期的结果是XCV?或者你总是希望XCV成为结果? – ehh
为什么'顶部(100)%'?它完全没有意义......也许你想要'顶级1'?你的问题不是很清楚。请尝试更好地描述你的目标。 –
我只想从所有表的T1Id记录,不包括表4 –