1
私は新しいと中古車のテーブルを持っている:発注結果
id country status car
1 Australia new Honda
2 Australia used Alfa Romeo
3 Australia used Jaguar
4 Australia used BMW
5 Belgium new BMW
6 Belgium new Citroen
7 Belgium used Honda
私はこのような結果を表示し、その後、国ごとにそれぞれ使用して、新しい車の数をカウントしたいと思います:
言い換えればcountry new used
Australia 1 new: Honda 3 used including Alfa Romeo
Belgium 2 new including BMW 1 used: Honda
、存在する場合、複数の「新しい」か(優先順位付けされたIDによって、)最初車名を文字列にそれらをCONCATし、国ごとに「使用」。
これは私のコードです:
SELECT t1.country,
CASE
WHEN LENGTH(group_concat(t1.status)) - LENGTH(REPLACE(group_concat(t1.status), "new", "")) = 1 THEN CONCAT("1 new: ", t1.car)
WHEN LENGTH(group_concat(t1.status)) - LENGTH(REPLACE(group_concat(t1.status), "new", "")) > 1 THEN CONCAT(LENGTH(group_concat(t1.status)) - LENGTH(REPLACE(group_concat(t1.status), "new", "")), " new including ", t1.car)
ELSE ''
END as new,
CASE
WHEN LENGTH(group_concat(t1.status)) - LENGTH(REPLACE(group_concat(t1.status), "used", "")) = 1 THEN CONCAT("1 used: ", t1.car)
WHEN LENGTH(group_concat(t1.status)) - LENGTH(REPLACE(group_concat(t1.status), "used", "")) > 1 THEN CONCAT(LENGTH(group_concat(t1.status)) - LENGTH(REPLACE(group_concat(t1.status), "used", "")), " used including ", t1.car)
ELSE ''
END as noms
from table1 t1
group by t1.country
はしかし、これらは私の結果、次のとおりです。これらの結果は
country new used
Australia 1 new: Honda 3 used including Honda
Belgium 2 new including BMW 1 used: BMW
、複数の「新規」または「使用」は国ごとがあれば、状態にかかわらず、最初の車を表示しているだけです。
複数の結果がある場合はのステータスでファーストカーを表示するにはどうすればよいですか?
パーフェクト、感謝10億。 – huey