【问题标题】:T-SQL use operator '&' like function SUM/COUNT/etcT-SQL 使用运算符 '&' 像函数 SUM/COUNT/etc
【发布时间】:2018-02-19 14:16:45
【问题描述】:

嗨, 在 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

【问题讨论】:

  • & 应该做什么?样本数据和期望的结果真的很有帮助。
  • 是什么阻止你使用它们?
  • 您可以将SUMMAX 替换为&,在这两种情况下您的查询都应该运行。
  • 这真的是 T-SQL 吗? SQL Server 中的引号运算符是方括号 ([]),而不是反撇号 (`)。
  • 我已经阅读了这个样本请求,合成器不好

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


【解决方案1】:

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

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

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

【讨论】:

  • @KantinCharignon 。 . .这回答了您提出的问题。如果您还有其他问题,您应该将其作为另一个问题提出,而不是通过修改已回答的问题而不是在 cmets 中提出。
  • 好的,抱歉。我的坏
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 2013-06-15
  • 2011-07-21
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
  • 2012-06-30
相关资源
最近更新 更多