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)
这篇关于执行按位求和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:执行按位求和


基础教程推荐
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- Sql Server 字符串到日期的转换 2021-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- SQL Server 2016更改对象所有者 2022-01-01
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01