可能我错过了一些东西,但是对于我来说,仍然看起来很奇怪,为什么不可能在位字段上使用max和min聚合.所以如果我尝试做这样的事情:
declare @temp table (data bit) insert into @temp select 1 union all select 0 select max(data) from @temp
我会得到一个错误操作数数据类型位对于最大运算符无效.但是如果我这样做:
declare @temp table (data bit) insert into @temp select 1 union all select 0 select top 1 * from @temp order by data desc
它工作正常,所以sql Server确实知道如何排序位字段.但是订购数据的可能性意味着我们可以获得最大或最小值.
那么这个限制背后的原因是什么呢?
解决方法
除非我们可以从sql Server团队获取一些内部信息,否则我们可能必须接受,有时候答案只是“因为”.文档很清楚,例如
MIN状态的MSDN页面;
MIN can be used with numeric,char,varchar,uniqueidentifier,or
datetime columns,but not with bit columns.
我的猜测(是的,我准备好燃烧,因为在SO答案中冒犯了一个猜测),这个好处并不超过代码更改的风险.有什么好处呢?
您不是第一个要求的,但是MS Connect上的Aggregate functions on BIT columns: MIN and MAX的回应表明它不太可能改变.