To sort records, you can add the following at the end of your sql
ORDER BY TO_DATE('01/'||month||'/'||year,'dd/mm/yyyy')
Note. Pivot table column names are case sensitive, so you need to specify them
here's the full query, selecting only the columns you need:
SELECT mnth_txt,"Omsk_CNT","Omsk_SM","Novosibirsk_CNT", "Novosibirsk_SM","Orenburg_CNT","Orenburg_SM" FROM ( SELECT * FROM ( SELECT 1 cnt, 2 sm, '55' name, 12 month, 2011 year, '12 2011' mnth_txt FROM DUAL UNION ALL SELECT 1 cnt, 2 sm, '54' name, 11 month, 2011 year, '11 2011' mnth_txt FROM DUAL UNION ALL SELECT 1 cnt, 2 sm, '55' name, 11 month, 2011 year, '11 2011' mnth_txt FROM DUAL UNION ALL SELECT 1 cnt, 2 sm, '54' name, 12 month, 2011 year, '12 2011' mnth_txt FROM DUAL UNION ALL SELECT 1 cnt, 2 sm, '55' name, 12 month, 2011 year, '12 2011' mnth_txt FROM DUAL UNION ALL SELECT 1 cnt, 2 sm, '56' name, 12 month, 2010 year, '12 2010' mnth_txt FROM DUAL ) PIVOT ( SUM(cnt) cnt, SUM(sm) sm FOR NAME IN ( '55' AS "Omsk",'54' AS "Novosibirsk", '56' AS "Orenburg" ) ) ORDER BY TO_DATE('01/'||month||'/'||year,'dd/mm/yyyy') )