如何查看哪些SQL列可分组

时间:2014-11-28 17:32:37

标签: sql-server group-by database-schema dynamic-columns aggregates

我正在编写一个日志分析器工具,它提供了一个动态查询的表列表。然后,对于每个表,我想允许用户运行选择查询,根据某些可选列对它们进行分组。挑战?确定(动态)哪些列是可分组类型的。任何帮助,将不胜感激。这可能会被错过分类,但SO是我所知道的最受欢迎的编码站点之一,因此将这些信息提供给未来的观众是有意义的。

非常感谢任何帮助。谢谢。

问题:如何(动态)判断MsSQL表中的哪些列是可分组的?

示例错误:操作数数据类型文本对于max operator无效。

1 个答案:

答案 0 :(得分:0)

我认为没有一种简单的方法可以做到这一点,例如:直接查询架构信息以获取IsGroupable属性。因此,这感觉就像一个温和的黑客,但这里有:

SELECT 
    * 
FROM    
    INFORMATION_SCHEMA.COLUMNS 
WHERE 
    DATA_TYPE IN ('bigint', 'bit', 'char', 'date', 'datetime', 'datetime2'
                , 'datetimeoffset', 'decimal', 'float', 'int', 'money', 'nchar', 'numeric'
                , 'nvarchar', 'real', 'smalldatetime', 'smallint', 'smallmoney', 'time'
                , 'timestamp', 'tinyint', 'uniqueidentifier', 'varchar')