SQL跨行和跨列求和;“匹配”吗;?
SQL问题: 我有一个3列的表格:从城市,到城市,旅行次数 和4行: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 |
+-----------+---------+------------+
| 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的建议执行。