Как изменить значение строки в заголовке столбца - PullRequest
0 голосов
/ 21 ноября 2011
select
extract(year from datetimestamp ) Yr,extract(month from datetimestamp) Mn,
c.weekday_of_month wk, a.aircraft_type,count( a.aircraft_type)  from fcm_bv.Flights b
join fcm_bv.Fleet a on  b.aircraftid=a.tail 
 join SYS_CALENDAR.CALENDAR c
 on cast(b.datetimestamp AS DATE FORMAT 'YYYY-MM-DD') = cast(c.calendar_date AS DATE FORMAT 'YYYY-MM-DD')
where cast(datetimestamp as date) >= '2011-09-01'
and cast(datetimestamp as date) <= '2011-09-30'  order by wk
group by Yr,Mn,wk,a.fleet,a.aircraft_type

При выполнении выше запроса я выхожу вот так

Yr      Mn  wk  AIRCRAFT_TYPE   Count(AIRCRAFT_TYPE)
2011    9   1   B737-700        1744
2011    9   1   B737-800        131
2011    9   1   B737-800W       2711
2011    9   1   B737-8BK        180
2011    9   1   B737-700W       329

Но мне нужен вывод в формате ниже

Yr   Mn    wk    B737-700    B737-800  B737-800W   B737-8BK    B737-700W      
2011 9      1      1744       131          2711        180         329

Может ли кто-нибудь мне помочь

1 Ответ

0 голосов
/ 22 ноября 2011

В прошлом, когда мне нужно было сделать это, стержень был против дискретного, управляемого объема категорий, и следующий SQL хорошо мне помог:

SELECT EXTRACT(YEAR FROM b.datetimestamp) AS Yr
     , EXTRACT(MONTH FROM b.datetimestamp) AS Mn
     , C.weekday_of_month
     , COUNT(CASE WHEN a.aircraft_type = 'B737-700' THEN a.aircraft_type ELSE NULL END) AS B737-700
     , COUNT(CASE WHEN a.aircraft_type = 'B737-800' THEN a.aircraft_type ELSE NULL END) AS B737-800
     , /* Other Known Aircrafts */
     , COUNT(CASE WHEN a.aircrat_type NOT IN ('<list of known aircraft types>') THEN a.aircraft_type ELSE NULL END) AS Uncategorized_Aircraft
FROM fcm_bv.Flights b
join fcm_bv.Fleet a on  b.aircraftid=a.tail 
 join SYS_CALENDAR.CALENDAR c
 on cast(b.datetimestamp AS DATE FORMAT 'YYYY-MM-DD') = cast(c.calendar_date AS DATE FORMAT 'YYYY-MM-DD')
WHERE cast(datetimestamp as date) >= '2011-09-01'
  AND cast(datetimestamp as date) <= '2011-09-30'  order by wk
GROUP BY Yr,Mn,wk,a.fleet

Если вам необходимо поворачиваться к постоянно меняющейся категории, лучше всего оставить этот инструмент в MS Excel или BI по выбору.

Надеюсь, это поможет.

...