繁体   English   中英

根据SQL Server中的两列对数据进行分组

[英]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

sql小提琴演示

您可以使用相关子查询消除往返行程,然后进行简单分组:

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

SQLFiddle演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM