 <p>As I understand the problem this will work:</p> <pre><code>SELECT t.value, t.from_id, t.to_id, t.loop_id FROM MyResults t INNER JOIN ( SELECT From_ID, To_ID, MIN(Value) [Value] FROM MyResults WHERE Loop_ID % 2 = 0 GROUP BY From_ID, To_ID ) MinT ON MinT.From_ID = t.From_ID AND MinT.To_ID = t.To_ID AND MinT.Value = t.Value </code></pre> <p>However, if you had duplicate values for a From_ID and To_ID combination e.g.</p> <pre><code>value from_id to_id loop_id ------------------------------------- 0.1 A B 2 0.1 A B 4 </code></pre> <p>This would return both rows.</p> <p>If you are using SQL-Server 2005 or later and you want the duplicate rows as stated above you could use:</p> <pre><code>SELECT Value, From_ID, To_ID, Loop_ID FROM ( SELECT *, MIN(Value) OVER(PARTITION BY From_ID, To_ID) [MinValue] FROM MyResults ) t WHERE Value = MinValue </code></pre> <p>If you did not want the duplicate rows you could use this:</p> <pre><code>SELECT Value, From_ID, To_ID, Loop_ID FROM ( SELECT *, ROW_NUMBER() OVER(PARTITION BY From_ID, To_ID ORDER BY Value, Loop_ID) [RowNumber] FROM MyResults ) t WHERE RowNumber = 1 </code></pre>