SQL跨行和跨列求和;“匹配”吗;?

SQL跨行和跨列求和;“匹配”吗;?,sql,sql-server,tsql,grouping,Sql,Sql Server,Tsql,Grouping,SQL问题: 我有一个3列的表格:从城市,到城市,旅行次数 和4行: +-----------+---------+------------+ | From_City | To_City | Trip_Count | +-----------+---------+------------+ | Berlin | London | 2 | | London | Berlin | 3 | | Sydney | Tokyo |

SQL问题:

我有一个3列的表格:从城市,到城市,旅行次数 和4行:

+-----------+---------+------------+
| From_City | To_City | Trip_Count |
+-----------+---------+------------+
| Berlin    | London  |          2 |
| London    | Berlin  |          3 |
| Sydney    | Tokyo   |          4 |
| Tokyo     | Sydney  |          6 |
+-----------+---------+------------+
我想将城市之间的行程汇总到一个只有两行的新表中:

+--------+------------+------------+
|  City  | Other_City | Trip_Count |
+--------+------------+------------+
| Berlin | London     |          5 |
| Sydney | Tokyo      |         10 |
+--------+------------+------------+
我不知道如何在SQL(最好是SQL Server)中实现这一点。有什么建议吗?谢谢

注意:两个城市之间的秩序并不重要。柏林-伦敦或伦敦-柏林都行。

试试这个:

SELECT CASE 
           WHEN From_City < To_City THEN From_City 
           ELSE To_City 
       END AS City,
       CASE 
           WHEN From_City >= To_City THEN From_City 
           ELSE To_City 
       END AS Other_City,
       SUM(Trip_Count) AS Trip_Count
FROM mytable
GROUP BY CASE WHEN From_City < To_City THEN From_City ELSE To_City END,
         CASE WHEN From_City >= To_City THEN From_City ELSE To_City END
选择案例
当从城市<到城市,然后从城市
还有其他的城市吗
最终成为城市,
案例
当从城市>=到城市,然后从城市
还有其他的城市吗
作为另一个城市结束,
作为跳闸计数的总和(跳闸计数)
从mytable
当从_City<到_City然后从_City ELSE到_City END时,按情况分组,
从城市>=到城市,然后从城市其他到城市结束时的情况

更新:正如FLICKER所指出的;这在SQL Server中不起作用,因为SQL Server既不提供最小值和最大值,也不提供任何类似的函数,如SQLite中的MIN/MAX。对不起。


两个城市中,第一个城市的
最小
,另一个城市的
最大

create table full_trips as
(
  select 
    least(from_city, to_city) as city,
    greatest(from_city, to_city) as other_city,
    sum(trip_count) as trip_count
  from trips
  group by least(from_city, to_city), greatest(from_city, to_city)
);

这是SQL Server语法吗?我找不到函数!哦,对不起,你说得对<代码>最小值和
最大值
在几乎每个DBMS中都可用,但在SQL Server中不可用。我不知道。(奇怪。SQL Server已经存在了大约二十年。为什么从来没有添加过这些函数?比较两个值没什么大不了的,但是在比较时必须比较两个以上的值,
是一件麻烦事。)这仍然是一个很好的解决方案。对于SQL Server,我将按照Georgos Bettos的建议执行。