我想进行智能计数操作,以便如果列中的数据相同,则将其计为1。
我的桌子是:
dbo.Messages
(
FromUserId INT,
ToUserId INT
)
数据:
INSERT dbo.Messages VALUES(1, 5), (2, 20), (5, 1), (1, 5);
计数应返回2,因为(1,5)和(5,1)在我的算法中相同。
如何在SQL Server TSQL中编写它?
提前致谢。
效果很好:
CREATE TABLE #Messages
(
FromUserId INT,
ToUserId INT
);
INSERT #Messages VALUES(1, 5), (2, 20), (5, 1), (1, 5);
SELECT COUNT(*)
FROM (
SELECT M1.FromUserId, M1.ToUserId
FROM #Messages AS M1
EXCEPT
SELECT M2.ToUserId, M2.FromUserId
FROM #Messages AS M2
WHERE M2.ToUserId > M2.FromUserId
) AS T;
派生表EXCEPT
将删除您的重复项,然后仅计算所谓的唯一值。请记住,这里不需要DISTINCT
关键字,EXCEPT
可以删除所有重复项。
派生表的结果:
FromUserId ToUserId
---------- --------
1 5
2 20
您可以在此处检查此查询的工作方式:https : //data.stackexchange.com/stackoverflow/query/524634/counting-unique-values
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句