gebruik een aggregaat in plaats van subquery's:
select distinct controlid,
max (case when a=3 and b=13 and c=0 and d= 0 then OrderNo end) as colA,
max (case when a=2 then OrderNo end) as colB,
max (case when a=1 and b=14 and e=1 then OrderNo end) as colC,
max (case when a=3 and b=13 and e=1 and c=0 and d=0 then OrderNo end) as colD,
max (case when OrderNo=#param2# then a end) as colE
from my_table
where controlid = #param1#
group by controlid
Ik weet niet welk RDBMS je gebruikt, dus de case when
constructie moet mogelijk worden aangepast aan uw lokale dialect. Deze zou geldig moeten zijn voor MSSQL
UPDATE:Mijn bril werkt niet goed en dus heb ik de ORACLE-tag niet opgemerkt. Beschamend...