Y at-il une raison pour laquelle min et max ne fonctionnent pas sur les champs de bits

Probablement, il me manque quelque chose, mais il me semble toujours étrange pourquoi il est impossible d'utiliser des agrégats max et min sur les champs de bits. Donc, si j'essaie de faire quelque chose comme ça:

 declare @temp table (data bit) insert into @temp select 1 union all select 0 select max(data) from @temp 

Je vais avoir une erreur Operand data type bit is invalid for max operator. Mais si je fais quelque chose comme ça:

 declare @temp table (data bit) insert into @temp select 1 union all select 0 select top 1 * from @temp order by data desc 

Cela fonctionne bien, donc SQL Server sait comment sortinger les champs de bits . Mais la possibilité de order des données implique que nous pouvons get un maximum ou un minimum. Quelle est la raison derrière cette ressortingction alors?

À less que nous puissions get des informations internes de l'équipe SQL Server, il se peut que nous acceptions que la réponse soit parfois "parce que". La documentation est cependant assez claire, par exemple la page MSDN pour les états MIN ;

MIN peut être utilisé avec des colonnes numériques, char, varchar, uniqueidentifier ou datetime, mais pas avec des colonnes de bits.

Ma conjecture (oui, je suis prêt à flamber pour hasarder une estimation dans une réponse SO!) Est que l'avantage ne l'emporte pas sur le risque de changement du code. Quel serait exactement le bénéfice?

Vous n'êtes pas le premier à requestr, mais la réponse aux fonctions Aggregate sur les colonnes BIT: MIN et MAX sur MS Connect suggère qu'il est peu probable que cela change.