Create a stored procedure, use a temp table to store the result of main query
and then return multiple resultsets to the client in one go:
create procedure proc_name
as
set nocount on
;with allOrders as (
Main query[With a lot of Joins]
)
select *
into #allOrders
from allOrders;
SELECT [Manupulated_Resultset_1]
FROM #allOrders;
SELECT [Manupulated_Resultset_2]
FROM #allOrders;
SELECT [Manupulated_Resultset_3]
FROM #allOrders;
GO
http://www.adobe.com/devnet/coldfusion/articles/stored_procs.html