i was hoping that there would be some row distribution so it would be easier to explain why the parallel plan may show more rows entering the sort operator than the serial plan
alas it was not to be
i could have sworn you had a post about that but i couldn't find it quickly
@ErikDarling Oh, perhaps I'm missing your point then. Which discrepancy are you referring to exactly? Which row count at which operator?
In your picture, thread 5 processes 1854 rows. The Sort, NLJ, and inner Seek show 1,012 rows. The Gather Streams sends out 1,000 after receiving 1,012 rows (not shown in execution plans).
In your answer, both serial and parallel sorts receive 1,854 rows
Imagine, for example, that 253 rows fit into each packet at the exchange. After three such packets have been filled by the parallel side of the plan, 3 full packets x 253 = 759 rows have been made available to the consumer side of the exchange, where the Top gets its rows from. The Top needs 1,000 rows so it can't finish yet. The parallel side of the plan needs to supply another full packet of 253 rows before the Top can see 1,000 rows. A total of four full packets of 253 rows = 1,012 rows.
That explains why the parallel NLJ, inner seek, and Sort output show 1,012 rows. They need to provide that many to the producer side of the Gather Streams exchange to fill four packets of 253 rows. Only full packets get moved across the exchange (until the end of the stream anyway).
The other seek produces 1,854 rows because the Sort input is blocking. This seek has to provide all the rows it has before the Sort will transition to producing output rows.