Caseステートメントを使用してデータを少し操作しようとしていますが、理解できないようです。
Stops
--------------------
1Stop
1-Stop
1 stop
1 Stop
1stop
1 Stop
2-Stop
私は思いつくことを試みています:
1-Stop.... 6
2-Stop.... 1
私が試したのは:
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
問題は、GROUP BY
でエイリアスStops
を使用できないことです。 GROUP BY
を使用している場合のクエリでは、各行の個別の値を使用しています。結果を取得するには、サブクエリを使用する必要があります。
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;
SQL Fiddle with Demo を参照してください。
または、サブクエリを使用しない場合は、GROUP BY
でCASE
式を繰り返すことができます。
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