我正在使用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 –