我正在编写一个日志分析器工具,它提供了一个动态查询的表列表。然后,对于每个表,我想允许用户运行选择查询,根据某些可选列对它们进行分组。挑战?确定(动态)哪些列是可分组类型的。任何帮助,将不胜感激。这可能会被错过分类,但SO是我所知道的最受欢迎的编码站点之一,因此将这些信息提供给未来的观众是有意义的。
非常感谢任何帮助。谢谢。
问题:如何(动态)判断MsSQL表中的哪些列是可分组的?
示例错误:操作数数据类型文本对于max operator无效。
答案 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')