当前位置:  开发笔记 > 数据库 > 正文

如何在同一SQL表中的两行之间执行按位OR运算?

如何解决《如何在同一SQL表中的两行之间执行按位OR运算?》经验,为你挑选了1个好方法。

我有一个SQL表,其结构类似于以下内容:

  Name     Value
(varchar)  (bit)
__________________
 Val1       1
 Val2       1
 Val3       0
 Val4       0
 Val1       0
 Val2       0
 Val3       0
 Val4       1

所以基本上,我有两个相同行但具有不同位值的实例.我想从此表中检索不同的行,其中位值为"或".因此,对于给定的示例,结果将如下所示:

Name    Value

Val1      1    (1 | 0)
Val2      1    (1 | 0)
Val3      0    (0 | 0)
Val4      1    (0 | 1)

这可以实现吗?我在Microsoft SQL Server 2012中工作.感谢任何形式的帮助.如果需要进一步说明,请告诉我.



1> Damien_The_U..:

观察"按位OR"具有与聚合函数相同的函数MAX(假设所有输入都是0或1,如果任何输入为1,则结果为1,否则为0)并且考虑到我们无法直接聚合的事实bit,这似乎工作:

declare @t table (Name varchar(17) not null,Value bit not null)
insert into @t(Name,Value) values
('Val1',1),
('Val2',1),
('Val3',0),
('Val4',0),
('Val1',0),
('Val2',0),
('Val3',0),
('Val4',1)

select Name,CONVERT(bit,MAX(CONVERT(int,Value))) as Value
from @t group by Name

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有