SQL,如何根据字段值对行进行分组

SQL, how to group rows based on field values

我对查询结果组有疑问。图像是一个例子。这是电缆清单。每根电缆都有两个属性,'From' 位置和 'To' 位置。如果我们想按位置对电缆列表进行分组,这就变得棘手了。

当我们按两个位置对数据进行分组时,结果将分为两组。

但实际上,将这两个组合并为一个更有意义,'From<->',或者说两个位置之间的电缆清单。

考虑再添加一个字段来标记两个位置之间的电缆。但是没有想到什么。

感谢您分享您的想法。

此致, 罗兰

SQL, 组

enter image description here

您可以按 2 列中最小和最大的列进行分组。
使用数据库的函数来执行此操作。
SQL 标准是一个 CASE 表达式,例如:

GROUP BY CASE WHEN A < B THEN A ELSE B END,
         CASE WHEN A < B THEN B ELSE A END

或者您可以使用 IF()IIF():

这样的函数
GROUP BY IF(A < B, A, B),
         IF(A < B, B, A)

或像 LEAST()GREATEST() 这样的函数:

GROUP BY LEAST(A, B),
         GREATEST(A, B)