 <p>The only thing that sticks out is "<code>&amp;</code>" which is <code>+</code> in SQL Server. However, <code>&amp;</code> in access also treats NULL values as the empty string, which needs further processing with <code>ISNULL</code> in SQL Server:</p> <pre><code>SELECT table1.* FROM table1 INNER JOIN (table2 INNER JOIN table3 ON ( table2.custkey = table3.custkey ) AND ( table2.sequence = table3.sequence )) ON table1.account = table2.account WHERE (( LEFT(table2.keyid, 1) = 'B' )) ORDER BY isnull(table3.lastname,'') + isnull(table3.firstname,''), table1.account; </code></pre> <p>If I were to write the query in SQL Server from scratch, I would probably do the joins serially rather than do the t2-t3 in a bracket before joining back to t1. The test for the first character would also be expressed as LIKE (a personal preference).</p> <pre><code> SELECT table1.* FROM table1 JOIN table2 ON table1.account = table2.account JOIN table3 ON table2.custkey = table3.custkey AND table2.sequence = table3.sequence WHERE table2.keyid LIKE 'B%' ORDER BY isnull(table3.lastname,'') + isnull(table3.firstname,''), table1.account; </code></pre>