Performing a bitwise sum(执行按位求和)
问题描述
作为复杂聚合的一部分,我想知道一些数据的按位总和,即如果我有值为 1,1,1,2,2,8 的行,按位 sum 是 11.在这种情况下,这些值都是 2 的精确幂(单个位),因此我可以通过对组进行分组和求和来绕过它(显然,与实际查询相比,这个示例有点受折磨)):
As part of a complex aggregate I want to know the bitwise sum of some data, i.e. if I have rows with values 1,1,1,2,2,8 the bitwise sum is 11. In this case the values are all exact powers of two (single bits), so I can hack around it by grouping and summing over the groups (obviously this example is a bit tortured compared to the real query):
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 中执行按位求和?
but is there a clean way to perform a bitwise sum in [T]SQL?
推荐答案
如果您的所有测试值都是单个位,如您的示例 (1, 2, 8) - 只需使用 SUM(DISTINCT col) 在您的查询中.
If all of your test values are single bits as in your example (1, 2, 8) - simply use SUM(DISTINCT col) in your query.
希望有所帮助.
(参考:http://msdn.microsoft.com/en-us/library/ms187810.aspx)
这篇关于执行按位求和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:执行按位求和
基础教程推荐
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- 带更新的 sqlite CTE 2022-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
