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

时间:2018-02-19 14:16:45

标签: sql sql-server tsql group-by operators

您好, 在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

1 个答案:

答案 0 :(得分:3)

SQL Server没有按位聚合AND。如果你知道你想要多少位,你可以逐位地做到:

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

按位操作通常表明数据库中的过早优化。通常最好将“位”表示为单独的标志。