You put me on the right track. Using temp table it works. Thank you.CREATE PROCEDURE dbo.sp_Vecellio_EquipmentHoursDetail( @Division CHAR(20) = Null, @JobNumber INT = 0, @EquipmentID CHAR(20), @DateFrom DATETIME = NULL, @DateTo DATETIME = NULL)ASSET NOCOUNT ONIf Object_ID('tempdb..#TempTable') Is Not Null Drop Table #TempTableCREATE TABLE #TempTable (job nvarchar(10), costcode nvarchar(10), jobdate DateTime, equipmentID nvarchar(20), equipmentname nvarchar(20), hours int, foreman nvarchar(10), approver nvarchar(10))INSERT INTO #TempTableSELECT substring(dbo.Job.CompanyJobId, 1, 10) as job, substring(dbo.Item.CompanyItemId, 1, 10) as costcode, dbo.Batch.ReportDate as jobdate, dbo.Equipment.CompanyEquipmentID as equipmentID, substring(dbo.Equipment.Name, 1, 20) as equipmentname, dbo.EquipmentLaborEvent.Hours as hours, substring (dbo.Batch.Name, 1, charindex('-',dbo.Batch.Name)-1) as foreman, substring (e2.UserName, 1, 10) as approver FROM dbo.EquipmentLaborEvent inner join dbo.Equipment on dbo.Equipment.EquipmentGuid = dbo.EquipmentLaborEvent.EquipmentGuid inner join dbo.Event on dbo.Event.EventGuid = dbo.EquipmentLaborEvent.EventGuid inner join dbo.Job on dbo.Job.JobGuid = dbo.Event.JobGuid inner join dbo.Item on dbo.Item.ItemGuid = dbo.Event.ItemGuid inner join dbo.Batch on dbo.Batch.BatchGuid = dbo.Event.BatchGuid inner join dbo.Region on dbo.Region.RegionGuid = Batch.RegionGuid left join dbo.Account e2 on e2.AccountGuid = dbo.Event.ApprovedByAccountGuidWHERE (@Division IS Null OR dbo.Region.CompanyRegionID = @Division) and (@JobNumber IS Null or dbo.Job.CompanyJobID = @JobNumber) and (@EquipmentID IS Null or dbo.Equipment.CompanyEquipmentID = @EquipmentID) and (@DateFrom IS Null OR dbo.Batch.Reportdate >= @DateFrom) and (@DateTo IS Null OR dbo.Batch.ReportDate <= @DateTo) SELECT * FROM #TempTable order by jobdate, job, costcode, equipmentidDROP TABLE #TempTableGO