J'essaie de manipuler un peu les données en utilisant une déclaration de cas, mais je n'arrive pas à le comprendre.
Stops
--------------------
1Stop
1-Stop
1 stop
1 Stop
1stop
1 Stop
2-Stop
J'essaie de trouver:
1-Stop.... 6
2-Stop.... 1
Ce que j'ai essayé c'est:
select CASE when
Stops = '1Stop' OR
Stops = '1 Stop' OR
Stops = '1 stop' then '1-Stop'
ELSE Stops END, count(*)
from table group by Stops
Le problème est que vous ne pouvez pas utiliser l'alias Stops
dans le GROUP BY
. Dans votre requête lorsque vous utilisez le GROUP BY
il utilise les valeurs individuelles pour chaque ligne. Vous devez utiliser une sous-requête pour obtenir le résultat:
select stops, count(*) Total
from
(
select
CASE
when Stops in ('1Stop', '1 Stop', '1 stop') then '1-Stop'
ELSE Stops
END as Stops
from yourtable
) d
group by stops;
Voir SQL Fiddle with Demo .
Ou si vous ne souhaitez pas utiliser de sous-requête, vous pouvez répéter l'expression CASE
dans le GROUP BY
:
select
CASE
when Stops in ('1Stop', '1 Stop', '1 stop') then '1-Stop'
ELSE Stops
END as Stops,
count(*) as Total
from yourtable
group by
CASE
when Stops in ('1Stop', '1 Stop', '1 stop') then '1-Stop'
ELSE Stops
END
Voir SQL Fiddle with Demo