Hopefully this is what you're after. Note that I've used a SharePoint List, but would be the same concept for your Dataverse table. Also, I'm not sure what you want to output, so I've just taken a couple of the columns from the list and put them into an HTML table.
SharePoint List used for this example.

See full flow below. I'll go into each of the actions.

Get items retrieves all your list items (you would use your List rows to get the data from your Dataverse table here).

Select Id Numbers is a Select that extracts out all of the Id Numbers.

Style HTML table is a Compose that contains some CSS for styling the HTML table when we send it via email.
<style>
table {
border-collapse: collapse;
}
table td,
table th {
border: 1px solid #ddd;
padding: 6px 20px;
text-align: left;
}
table th {
background-color: #1C6EA4;
color: white;
}
</style>

Apply to each uses the following expression so it will iterate over each unique Id Number.
union(body('Select_Id_Numbers'), body('Select_Id_Numbers'))

Filter array will filter out only the items where the Id Number is equal to the Id Number we are currently iterating over.

Select Emails extracts out all the emails from the Filter array (items that match the current Id Number).
//You would need to put the internal name of your Email column
item()?['Email']

Create HTML table uses the output from the Filter array and maps the columns we want in our Table. I've just mapped out Account Name and Account Number for this example.
//You would need to use the internal names of your Dataverse columns
//Account Name (I renamed the Title column in my List for Account Name)
item()?['Title']
//Account Number
item()?['Account Number']

Send an email uses the following expression to get a unique list of emails separated by a semi-colon.
join(union(body('Select_Emails'), body('Select_Emails')), ';')

After running the flow, two emails would be sent - one for each of the Id Numbers.

