小编典典

执行按位求和

sql

作为复杂聚合的一部分,我想知道某些数据的 按位 求和,即,如果我具有值分别为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

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


阅读 150

收藏
2021-04-22

共1个答案

小编典典

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

希望能有所帮助。

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

2021-04-22