多个表中一列的SQL distinct和count
所以我想要的是有一个不同值的表和这些值的计数。基本上我希望它看起来像这样:多个表中一列的SQL distinct和count,sql,sql-server,count,distinct,multiple-tables,Sql,Sql Server,Count,Distinct,Multiple Tables,所以我想要的是有一个不同值的表和这些值的计数。基本上我希望它看起来像这样: DistinctValue | Count Bob | 4 Fred | 5 George | 2 Joeseph | 1 对于单个表,我使用: SELECT ColumnName, COUNT(*) from TableName group by Column 我将如何做到这一点,以便它跨越多个表。我有大约30张桌子,可能更多,我需要
DistinctValue | Count
Bob | 4
Fred | 5
George | 2
Joeseph | 1
对于单个表,我使用:
SELECT ColumnName, COUNT(*) from TableName group by Column
我将如何做到这一点,以便它跨越多个表。我有大约30张桌子,可能更多,我需要做这个
任何帮助都将不胜感激。如果您需要更多信息,请告诉我。哦,不用担心列名,因为所有表都有相同的列名
WITH mytbl AS (
SELECT ColumnName, COUNT(*) AS myCount from TableName group by Column
UNION ALL
SELECT ColumnName, COUNT(*) from TableName2 group by Column
... a union all for every table
)
SELECT ColumnName, SUM(myCount)
FROM mytbl
GROUP BY ColumnName
-如果您使用的是早期版本的MS SQL,则可以将UNION语句放入大型子select或表变量中。
-也就是说,它们将在最后一个查询中取代mytbl,在底部查询中用CTE中的联合替换mytbl。您需要创建并执行动态tsql以获得结果:
SELECT
t.name,
count(c.name) as columnsname
FROM
sys.tables t
inner join sys.columns c
ON t.object_id = c.object_id
group by t.name
DECLARE @Tsql NVARCHAR(MAX) = ''
DECLARE @ColumnName SYSNAME = 'YourColumnName'
SELECT @Tsql = @Tsql + 'SELECT ''[' + c.TABLE_SCHEMA + '].[' + c.TABLE_NAME + ']'' AS TableName, ' +
'[' + @ColumnName + '], COUNT(*) AS RecordCount FROM [' + c.TABLE_SCHEMA + '].[' + c.TABLE_NAME + '] GROUP BY [' + @ColumnName + '] UNION ' + CHAR(13) + CHAR(10)
FROM INFORMATION_SCHEMA.COLUMNS c
JOIN INFORMATION_SCHEMA.TABLES t
ON t.TABLE_SCHEMA = c.TABLE_SCHEMA
AND t.TABLE_NAME = c.TABLE_NAME
--Comment out the next line if you want data/counts for views too.
AND t.TABLE_TYPE = 'BASE TABLE'
WHERE c.COLUMN_NAME = @ColumnName
--Remove the last UNION (and carriage-return, line-feed)
SELECT @Tsql = LEFT(@Tsql, LEN(@Tsql) - 8)
--Verify query.
PRINT @Tsql
--Uncomment when ready to proceed.
--EXEC (@Tsql)
SQL-SQL的早期版本是一种查询语言,它不是DBMS产品。您使用的是哪种DBMS?博士后?Oracle?@a_horse_与_no_name我对一个数据库使用Sql Server 2008 R2,对另一个数据库使用Sql Server 2012。所有表中的列名都相同吗?@DMason是的,所有表中的列名都相同。我很难理解这是怎么回事。你能简单地给我解释一下吗?