Hi -- i think you will want to double-dip into the sharepoint list...
First, pull the sharepoint list to get the list of renewals within the next 60 days...you could grab just the email addresses into an array...and then filter the array to remove duplicates. You can use union() to remove duplicates...in powerautomate, union combines arrays and removes duplicates, so if you combine an array with itself, the output is an array of unique values.
So, to do all that, you can use the Sharepoint "Get Items" with the filter on the renewal date...that gets you the items.
Then, add a Data Operation -> Select
and in the Select, just map the email address.
Next, add a Data Operation -> Compose
and, assuming your Select is named "Select" this should give you unique email addresses: union(body('Select'),body('Select'))
Now, you can use an Apply to Each loop and put everything you had previously in your original Flow inside it, with the addition of including the email address as part of the filter when you select the Sharepoint items.
Next, you can move your email action out of the original Apply to Each, and kindof out one level and in the place of the original step that sent emails, if you append the info you want to a variable, then each pass that used to result in an email being sent will now add content to your variable...
Then, in your step to compose an email, grab the combined content of the variable.
The result should be:
1. get the list of unique email addresses where the owner has one or more expiring items
2. use that in the filter to get the list of expiring items for each owner
3. combine the expiring items into a list/text/variable
4. compose 1 email per owner, and include the combined info in that one email.