WITH ssr AS ( SELECT s_store_id, sum(sales_price) AS sales, sum(profit) AS profit, sum(return_amt) AS RETURNS, sum(net_loss) AS profit_loss FROM (SELECT ss_store_sk AS store_sk, ss_sold_date_sk AS date_sk, ss_ext_sales_price AS sales_price, ss_net_profit AS profit, cast(0 AS DECIMAL(7, 2)) AS return_amt, cast(0 AS DECIMAL(7, 2)) AS net_loss FROM store_sales UNION ALL SELECT sr_store_sk AS store_sk, sr_returned_date_sk AS date_sk, cast(0 AS DECIMAL(7, 2)) AS sales_price, cast(0 AS DECIMAL(7, 2)) AS profit, sr_return_amt AS return_amt, sr_net_loss AS net_loss FROM store_returns) salesreturns, date_dim, store WHERE date_sk = d_date_sk AND d_date BETWEEN cast('2000-08-23' AS DATE) AND ((cast('2000-08-23' AS DATE) + INTERVAL 14 days)) AND store_sk = s_store_sk GROUP BY s_store_id), csr AS ( SELECT cp_catalog_page_id, sum(sales_price) AS sales, sum(profit) AS profit, sum(return_amt) AS RETURNS, sum(net_loss) AS profit_loss FROM (SELECT cs_catalog_page_sk AS page_sk, cs_sold_date_sk AS date_sk, cs_ext_sales_price AS sales_price, cs_net_profit AS profit, cast(0 AS DECIMAL(7, 2)) AS return_amt, cast(0 AS DECIMAL(7, 2)) AS net_loss FROM catalog_sales UNION ALL SELECT cr_catalog_page_sk AS page_sk, cr_returned_date_sk AS date_sk, cast(0 AS DECIMAL(7, 2)) AS sales_price, cast(0 AS DECIMAL(7, 2)) AS profit, cr_return_amount AS return_amt, cr_net_loss AS net_loss FROM catalog_returns ) salesreturns, date_dim, catalog_page WHERE date_sk = d_date_sk AND d_date BETWEEN cast('2000-08-23' AS DATE) AND ((cast('2000-08-23' AS DATE) + INTERVAL 14 days)) AND page_sk = cp_catalog_page_sk GROUP BY cp_catalog_page_id) , wsr AS ( SELECT web_site_id, sum(sales_price) AS sales, sum(profit) AS profit, sum(return_amt) AS RETURNS, sum(net_loss) AS profit_loss FROM (SELECT ws_web_site_sk AS wsr_web_site_sk, ws_sold_date_sk AS date_sk, ws_ext_sales_price AS sales_price, ws_net_profit AS profit, cast(0 AS DECIMAL(7, 2)) AS return_amt, cast(0 AS DECIMAL(7, 2)) AS net_loss FROM web_sales UNION ALL SELECT ws_web_site_sk AS wsr_web_site_sk, wr_returned_date_sk AS date_sk, cast(0 AS DECIMAL(7, 2)) AS sales_price, cast(0 AS DECIMAL(7, 2)) AS profit, wr_return_amt AS return_amt, wr_net_loss AS net_loss FROM web_returns LEFT OUTER JOIN web_sales ON (wr_item_sk = ws_item_sk AND wr_order_number = ws_order_number) ) salesreturns, date_dim, web_site WHERE date_sk = d_date_sk AND d_date BETWEEN cast('2000-08-23' AS DATE) AND ((cast('2000-08-23' AS DATE) + INTERVAL 14 days)) AND wsr_web_site_sk = web_site_sk GROUP BY web_site_id) SELECT channel, id, sum(sales) AS sales, sum(returns) AS returns, sum(profit) AS profit FROM (SELECT 'store channel' AS channel, concat('store', s_store_id) AS id, sales, returns, (profit - profit_loss) AS profit FROM ssr UNION ALL SELECT 'catalog channel' AS channel, concat('catalog_page', cp_catalog_page_id) AS id, sales, returns, (profit - profit_loss) AS profit FROM csr UNION ALL SELECT 'web channel' AS channel, concat('web_site', web_site_id) AS id, sales, returns, (profit - profit_loss) AS profit FROM wsr ) x GROUP BY ROLLUP (channel, id) ORDER BY channel, id LIMIT 100