我正在分析许多表格的数据质量,包括最小值,最大值,平均值,标准差等量化指标。
如何在不知道表格列名的情况下在所有表格列上选择不同的统计操作(最小值,最大值,标准偏差...)?
类似于:
选择min(col1),max(col1),stdev(col1),min(col2)...,min(colN) 来自table1
但是对列名进行动态引用,因为我必须在具有不同列名的众多表上运行它,并且我不想每次都更改代码。
我正在使用SQL Management Studio。
非常感谢你。
答案 0 :(得分:0)
嗯,这是一个相当合理的方法来做这样的事情:
注意您需要将其余的数值数据类型添加到此示例中。
DECLARE @SQL nvarchar(max) = '';
SELECT @SQL = @SQL +
'
UNION ALL
SELECT '''+ TABLE_NAME +''' As TableName,
'''+ COLUMN_NAME +''' As ColumnName,
MIN('+ COLUMN_NAME +') As [Min],
MAX('+ COLUMN_NAME +') As [Max],
STDEV('+ COLUMN_NAME +') As [STDEV]
FROM '+ TABLE_NAME
FROM information_schema.columns
WHERE DATA_TYPE IN('tinyint', 'smallint', 'int', 'bigint') -- Add other numeric data types
SELECT @SQL = STUFF(@SQL, 1, 11, '') -- Remove the first `UNION ALL` from the query
EXEC(@SQL)
此查询的结果将如下所示:
TableName ColumnName Min Max STDEV
Table1 Col1 -123 543 100
Table1 Col2 54 72 5
Table1 Col3 0 1000 100