执行按位求和

Mar*_*ell 10 sql t-sql sql-server

作为复数聚合的一部分,我想知道一些数据的按位求和,即如果我有值为1,1,1,2,2,8的行,则按求和为11.在这种情况下,这些值都是精确的幂两个(单个位),所以我可以通过对组进行分组和求和来破解它(显然这个例子与真实查询相比有点折磨):

select SUM(y.test)
from (
    select x.test
    from ( -- garbage test data
        select 1 as [test]
        union all select 1
        union all select 1
        union all select 2
        union all select 2
        union all select 8) x
group by x.test) y
Run Code Online (Sandbox Code Playgroud)

但有没有一种干净的方法来执行[T] SQL中的按位求和?

Kie*_*one 18

如果您的示例中的所有测试值都是单个位(1,2,8) - 只需SUM(DISTINCT col)在查询中使用即可.

希望有所帮助.

(供参考:http://msdn.microsoft.com/en-us/library/ms187810.aspx)