SELECT COALESCE(TO_CHAR(calendaryear), 'All years') AS Year,  
            COALESCE(channelname, 'All channels') AS Channel, 
            COUNT(DISTINCT orderkey) AS Orders_Num,
            GROUPING(channelname) AS SubTotal_Channel,
            GROUPING(TO_CHAR(calendaryear)) AS SubTotal_Year
FROM dimorderchannel doc INNER JOIN factonlinesales fos
                ON doc.channelkey = fos.channelkey
            INNER JOIN dimdate dd 
                ON dd.datekey = fos.orderdatekey        
GROUP BY ROLLUP(TO_CHAR(calendaryear), channelname) ;