Sql server 汇总SQL Server 2000数据库中数字字段的T-SQL查询

Sql server 汇总SQL Server 2000数据库中数字字段的T-SQL查询,sql-server,tsql,Sql Server,Tsql,我有一个SQLServer2000DB,我想检索数据库用户表中包含的所有数字字段的摘要信息 我可以通过以下查询检索名称、数据类型和大小: SELECT t.name AS [TABLE Name], c.name AS [COLUMN Name], p.name AS [DATA Type], p.length AS [SIZE] FROM dbo.sysobjects AS t JOIN dbo.syscolumns AS c ON t.id=c.id JOIN dbo.systypes A

我有一个SQLServer2000DB,我想检索数据库用户表中包含的所有数字字段的摘要信息

我可以通过以下查询检索名称、数据类型和大小:

SELECT  t.name AS [TABLE Name],
c.name AS [COLUMN Name],
p.name AS [DATA Type],
p.length AS [SIZE]
FROM dbo.sysobjects AS t
JOIN dbo.syscolumns AS c
ON t.id=c.id
JOIN dbo.systypes AS p
ON c.xtype=p.xtype
WHERE t.xtype='U'
and p.prec is not null
如何进一步列出每个字段中包含的平均值


这可以通过子查询完成,还是必须将此查询的结果放在光标中,然后对每列执行第二个select查询?

在我看来,您需要一个分析工具。
您可以使用Visual Studio 2008 Database Edition或开源替代软件,例如。

我最好的快速猜测是使用光标:

DECLARE @Table varchar(80)
DECLARE @Column varchar(80)
DECLARE @Sql varchar(300)

DECLARE fields CURSOR FORWARD_ONLY
FOR SELECT t.name AS [Table], c.name AS [COLUMN]
FROM dbo.sysobjects AS t
JOIN dbo.syscolumns AS c ON t.id=c.id
JOIN dbo.systypes AS p ON c.xtype=p.xtype
WHERE t.xtype='U'
  and p.name = 'int'
  and p.prec is not null

OPEN fields

FETCH NEXT FROM fields 
INTO @Table, @Column

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @sql = 'SELECT ''' + @Table + '.' + @Column + ''', Avg(' + @Column+ ') FROM ' + @Table
    EXEC(@Sql)

    FETCH NEXT FROM fields 
    INTO @Table, @Column

END
CLOSE fields
DEALLOCATE fields
临时桌子也可以用。还可以添加Min()和Max()值。
希望对您有所帮助

谢谢-我意识到在一个查询中不可能实现这一点,因为您无法从变量中构造select-但我没有想过使用exec()来克服这一点。太好了,谢谢!同意,DataCleaner是一个不错的选择。有了它,您将发现比任何内置数据分析器都有趣得多的东西。最新版本提供了更好的连接到MS SQL server的文档,因此现在应该更容易: