Q:

Is there any way to get away without writing a left join subquery twice?

My SQL isn't as strong as it could be.  It's a different way of thinking compared to writing C#.  I'm working on a query and rewriting it using "left join/is null" to get away from the "not in" syntax.
select t1.id, t2.col1
from table1 t1
join table2 t2 on t1.id = t2.id
left join (select sub.id from ratherLargeSubquery sub) s1
   On s1.id = t1.id
left join (select sub.id from ratherLargeSubquery sub) s2
   On s2.id = t2.id
where
s1.id is null and
s2.id is null

Is there any way to get away from writing ratherLargeSubquery twice?  I've tried
select t1.id, t2.col1
from table1 t1
join table2 t2 on t1.id = t2.id
left join (select sub.id from ratherLargeSubquery sub) s1
   On (s1.id = t1.id and t2.id = s1.id)
where
s1.id is null

but of course that returns the same results as if I never added the left join in the first place and 
select t1.id, t2.col1
from table1 t1
join table2 t2 on t1.id = t2.id
left join (select sub.id from ratherLargeSubquery sub) s1
   On (s1.id = t1.id or s1.id = t2.id)
where
s1.id is null

Just runs for over 20 times the length of time of the original query without every returning any results.
Back to the question, is there any way to write it without writing ratherLargeSubquery twice

A:

I almost hesitate to post this given that many knowledgeable posters have not mentioned it, but why not a common table expression?
I gather your true objection is not having two left joins but having to duplicate the logic of "ratherLargeSubquery".
with cte AS ( SELECT sub.id FROM ratherLargeSubquery sub )
select t1.id, t2.col1
from table1 t1
join table2 t2 on t1.id = t2.id
left join cte s1
   On s1.id = t1.id
left join cte s2
   On s2.id = t2.id
where
s1.id is null and
s2.id is null

