Something like this will do it, without sample data, I can't say it is 100% correct though. Also, if you have more Status_Names, you will need to add them.select 'Trade Amounts' AS TradeAmount , [Dealer Approved] , [Ticket Approved] , [Trade Complete]from ( SELECT Status_Name, Trade_Freq as Trades FROM Entrader.Entrader.Agreement_vw AG LEFT OUTER JOIN Entrader.Core.Attribute_Values_vw AGST_ATVAL ON AGST_ATVAL.Entity_Type = 'Agreement' AND AGST_ATVAL.Attribute_Name = 'Agreement Status' AND AG.Agreement_Id = AGST_ATVAL.Entity_Id AND Is_Active = 1 left outer join(select A.Agreement_ID, Status_Name, Count(A.Trade_ID) as Trade_Freq FROM Entrader.Entrader.Trades_vw A Inner Join Entrader.Entrader.Trade_Status_vw B ON A.TRADE_ID = B.TRADE_ID WHERE B.Updated = (Select max(B1.Updated) from Entrader.Entrader.Trade_Status_vw B1 where B1.Trade_Id = B.Trade_Id) GROUP BY A.Agreement_Id, Status_Name) Trd on AG.Agreement_ID = Trd.Agreement_ID WHERE AGST_ATVAL.Entry_Key IN ('New') AND Commodity_Name in ('Biomass') ) getdatapivot ( SUM(Trades) for Status_Name IN ([Dealer Approved] , [Ticket Approved] , [Trade Complete]) ) pvt