I have two tables with below structure
Person(ID, Name, ...)
Action(ID, FirstPersonId, SecondPersonId, Date)
I wanna retrieve this data for each person:
Number of action that a person be on second person from last action that be on first person
Current query
Select  Result.Id ,
        (Select Count(*)
            From    Action
            Where   SecondPersonId = Result.Id 
                    AND Date > Result.LastAction)
    From    
            (Select ID ,
                    (   
                        Select Top 1 Date
                            From    Action
                            Where   Action.FirstPersonId = Person.Id
                    ) as LastAction
                From    Person ) As Result
this query has bad performance and i need very better one.
 
     
    