没找到现成的函数:(对于该字段只放0,1的情况,好像可以
OR:用MAX()代替
AND:用AVG()代替

解决方案 »

  1.   

    select 1|20
    select 1&3
      

  2.   

    |(按位 OR)
    在 Transact-SQL 语句中,将两个给定的整型值转换为二进制表达式,对其执行按位逻辑或运算。语法
    expression | expression参数
    expression是任何有效的 Microsoft® SQL Server™ 表达式(表达式必须由整数数据类型分类中的任何数据类型组成。expression 是一个经过处理并转换为二进制数字以便进行位运算的整数。结果类型
    如果输入值为 int,则返回 int;如果输入值为 smallint,则返回 smallint;或者如果输入值为 tinyint,则返回 tinyint。注释
    通过从两个表达式取对应的位,位运算符 | 在两个表达式之间执行按位逻辑或运算。如果在输入表达式中有一个位为 1 或者两个位均为 1(正在被解析的当前位),那么结果中的位被设置为 1;如果输入表达式中的两个位都不为 1,则结果中该位的值被设置为 0。位运算符 | 要求有两个表达式,并且只可以用在具有整型数据类型分类的表达式上。如果左右表达式的整型数据类型不同(例如,左边 expression 的数据类型是 smallint,右边 expression 的数据类型是 int),那么将较小的数据类型的参数转换为较大的数据类型。在该示例中,数据类型为 smallint 的 expression 被转换为 int 数据类型。
      

  3.   

    select 170|20|10
    /*
                
    ----------- 
    190(所影响的行数为 1 行)
    */
      

  4.   


    create table #aa(id int,aa int,bb int)
    insert #aa values(1,22,33)
    insert #aa values(1,33,12)
    insert #aa values(1,34,10)
    select *, aa|bb 'aa or bb',aa&bb 'aa and bb' from #aa----------------
    id          aa          bb          aa or bb    aa and bb   
    ----------- ----------- ----------- ----------- ----------- 
    1           22          33          55          0
    1           33          12          45          0
    1           34          10          42          2(3 row(s) affected)