如何在Microsoft SQL查询中实现互反Source与Destination配对的跨分组统计
SQL Server 互反配对合并统计方案
实现思路
将Source和Destination两个字段按固定规则(如字典序)排序后作为分组键,确保正向、反向的配对生成相同的分组值,即可合并统计。
注意:你原查询中的字段名
Destinaton存在拼写错误,实际使用时请替换为正确的字段名。
通用实现方案(兼容所有SQL Server版本)
SELECT CASE WHEN Source < Destination THEN Source ELSE Destination END AS Source, CASE WHEN Source < Destination THEN Destination ELSE Source END AS Destination, COUNT(*) AS [Count] FROM dbo.Pakete GROUP BY CASE WHEN Source < Destination THEN Source ELSE Destination END, CASE WHEN Source < Destination THEN Destination ELSE Source END;
简化实现方案(仅支持SQL Server 2022及以上版本)
可使用SQL Server 2022新增的LEAST、GREATEST函数简化代码:
SELECT LEAST(Source, Destination) AS Source, GREATEST(Source, Destination) AS Destination, COUNT(*) AS [Count] FROM dbo.Pakete GROUP BY LEAST(Source, Destination), GREATEST(Source, Destination);
两种方案执行后都会返回你需要的结果:Source为ABC、Destination为DEF、Count为2。
内容的提问来源于stack exchange,提问作者Severin Schmid
相关产品推荐
相关产品推荐

