Find your content:

Search form

You are here

Trying to figure out what opportunities have progressed in a week


I am trying to come with some logic to figure out what Opportunities have progressed in a week. One thing I was thinking of doing was getting the latest and earliest stages for the Opportunities from the Opportunity History table.

Then comparing the stages and this will indicate if an Opportunity has progressed or not.

So, do get the latest. I could do something like:

SELECT Amount, CloseDate, CreatedById, CreatedDate, IsDeleted, ExpectedRevenue, 
Id, OpportunityId, Probability, StageName, SystemModstamp, ForecastCategory 
FROM OpportunityHistory
WHERE OpportunityId = 'blah'
order by createdDate desc limit 1 

However, I need to do this for all Opportunities that belong to a certain bunch of Users. I am not sure how to do this. Any tips?


Attribution to: dublintech

Possible Suggestion/Solution #1

I ended up doing it by:

List<Opportunity> opps = [SELECT id, Probability, LastModifiedDate, OwnerId, Amount,
            (SELECT StageName,Probability,SystemModstamp FROM OpportunityHistories order by SystemModstamp desc) oppHistory
            FROM Opportunity 
            where LastModifiedDate = LAST_N_DAYS:7];

and then looping throu OpportunityHistory information for the Opportunities.

Attribution to: dublintech

Possible Suggestion/Solution #2

I would try it so:

First i would select a users, and then opportunity history.

List<Account> acc = [ Select Id From Account Where CreatedDate = LAST_WEEK ];

List<OpportunityHistory> oppHistory = [ Select OpportunityId, CloseDate, Amount 
                                        From OpportunityHistory
                                        Where Opportunity.AccountId IN :acc ];

Attribution to: Sergej Utko
This content is remixed from stackoverflow or stackexchange. Please visit

My Block Status

My Block Content