[英]Grouping data based on two columns in sql server
考虑以下输入
Country1 Country2
A Z
B Y
C X
D W
X C
W D
A Z
我想将往返行程视为一体来对数据进行分组。 例如:将C到X和X到C视为1。
Country1 Country2 Count of Trip
A Z 2
B Y 1
C X 1
D W 1
如何在查询中将往返行程分组在一起。
with cte as (
select
case when Country1 < Country2 then Country1 else Country2 end as Country1,
case when Country1 < Country2 then Country2 else Country1 end as Country2
from Table1
)
select
Country1, Country2, count(*)
from cte
group by Country1, Country2
您可以使用相关子查询消除往返行程,然后进行简单分组:
SELECT
t1.Country1,
t1.Country2,
COUNT(*) AS Trips
FROM Table1 t1
WHERE NOT EXISTS
(
SELECT * FROM Table1 t2
WHERE t1.Country1 = t2.Country2
AND t1.Country2 = t2.Country1
AND t1.Country1 > t1.Country2
)
GROUP BY t1.Country1, t1.Country2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.