简体   繁体   English

mysql 将 2 行分组为 1,行之间只有一个不同的值

[英]mysql group 2 rows into 1 with only one different value between the rows

I currently have this query:我目前有这个查询:

SELECT Club_Name, SUM(Data_km) AS km, Type_id
FROM Data
INNER JOIN Clubs ON Data.Data_Club = Clubs.Club_id
INNER JOIN Types ON Clubs.Club_Type = Types.Type_id
WHERE Club_isActive = 1
GROUP BY Club_Name, Type_id

which gives me this table:这给了我这张桌子:

club_name俱乐部名称 km公里 type类型
A一个 10 10 1 1
A一个 15 15 2 2
B 80 80 1 1
B 34 34 2 2
C C 36 36 1 1

And I'm trying to achieve:我正在努力实现:

club_name俱乐部名称 type 1 km键入 1 公里 type 2 km类型 2 公里
A一个 10 10 15 15
B 80 80 34 34
C C 36 36

not all clubs will have a type 2. How do I rewrite the query to achieve the reorganization?并非所有俱乐部都会有类型 2。如何重写查询以实现重组?

You can use conditional aggregation:您可以使用条件聚合:

SELECT Club_Name, 
       SUM(CASE WHEN Type_id = 1 THEN Data_km END) as km_1,
       SUM(CASE WHEN Type_id = 2 THEN Data_km END) as km_2
FROM Data d JOIN
     Clubs c
     ON d.Data_Club = c.Club_id JOIN
     Types t
     ON c.Club_Type = t.Type_id
WHERE Club_isActive = 1
GROUP BY Club_Name;

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

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