首页 > 解决方案 > 计算 SQL Server 中两列之间的关系

问题描述

早上好,我在 sql studio 中有两列,我需要计算一列和另一列元素之间的关系。问题是它似乎只是在“一个方向”计数,我想知道两者。如果我向您展示一个简单的示例,可能会更容易。我正在使用 SQL 服务器。

这是原始表:

Col1    Col2
3       1
3       2
3       2
4       4
4       5
4       6
3       2
2       3
2       3

如果我执行以下操作(基于 count(concat)),它会给出以下结果。

select Col1, Col2, count(concat(Col1, Col2)) as weight 
 FROM test1
 group by Col1, Col2

Col1    Col2    weight
3       1       1
3       2       3
2       3       2
4       4       1
4       5       1
4       6       1

但我想要的也是计算这两个元素之间的关系,如果这是在一列或另一列中的话。因此,3-2(或 2-3)之间的关系数为 5。可以这样做吗?

3   2   5

任何建议都会非常受欢迎!提前致谢!

标签: sqlcountrelationship

解决方案


大多数数据库支持least()greatest(). 这允许您执行以下操作:

select least(col1, col2) as col1, greatest(col1, col2) as col2,
       count(*) as cnt
from t
group by least(col1, col2), greatest(col1, col2);

如果您的数据库不支持这些方便的功能,那么您可以使用case表达式实现类似的逻辑。


推荐阅读