T-SQL 像函数 SUM/COUNT/etc 一样使用运算符 '&'

T-SQL use operator '&' like function SUM/COUNT/etc

你好, 在 SQL-Server (2014) 中我也搜索了这样的请求:

SELECT 
  T.[Text],
  &(T.[Numeric])
FROM 
  MyTable AS T
GROUP BY 
  T.[Text];

我想使用“&”和“|”像 SUM()/MAX()/COUNT()/MIN() 函数。 有人可以帮助我吗?

编辑: 太需要了:

SELECT 
  T.[Text],
  |(T.[Numeric])
FROM 
  MyTable AS T
GROUP BY 
  T.[Text];

编辑 2:

CREATE TABLE [dbo].[1L_Tests](
  [ID_Test]   [int] NOT NULL,
  [Text]     [varchar](5) NOT NULL,
  [Numeric] [int] NOT NULL,
  PRIMARY KEY ([ID_Test])
);  
GO
INSERT INTO [dbo].[1L_Tests] 
  ([ID_Test], [Text], [Numeric])
VALUES
  (1,  'KCH', 0)
  ,(2, 'KCH', 12)
  ,(3, 'KCH', 13)
  ,(4, 'DAF', 9)
  ,(5, 'DAF', 7)
  ,(6, 'LDE', 29)
  ,(7, 'LDE', 37)
  ,(8, 'LDE', 46);
GO
SELECT 
  T.[Text],
  &(T.[Numeric]) AS 'Inter',
  |(T.[Numeric]) AS 'Union'
FROM 
  [1L_Tests] AS T
GROUP BY 
  T.[Text];

我预计:

 Text | Inter | Union
 KCH  ;   0   ;  13
 DAF  ;   1   ;  15
 LDE  ;   4   ;  63

SQL 服务器没有按位聚合 AND。如果你知道你想要多少位,你可以做到 bit-by-bit:

select . . .,
       min(t.number & 1) | min(t.number & 2) | min(t.number & 4) | . . .
from . . .

按位运算通常表明数据库中的过早优化。通常最好将 "bits" 表示为单独的标志。