您好, 在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
答案 0 :(得分:3)
SQL Server没有按位聚合AND。如果你知道你想要多少位,你可以逐位地做到:
select . . .,
min(t.number & 1) | min(t.number & 2) | min(t.number & 4) | . . .
from . . .
按位操作通常表明数据库中的过早优化。通常最好将“位”表示为单独的标志。