[英]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 ![]() |
1 ![]() |
A![]() |
15 ![]() |
2 ![]() |
B![]() |
80 ![]() |
1 ![]() |
B![]() |
34 ![]() |
2 ![]() |
C ![]() |
36 ![]() |
1 ![]() |
And I'm trying to achieve:我正在努力实现:
club_name![]() |
type 1 km![]() |
type 2 km![]() |
---|---|---|
A![]() |
10 ![]() |
15 ![]() |
B![]() |
80 ![]() |
34 ![]() |
C ![]() |
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.