Q:

cross joining two tables

I have a table that looks like this, lets call this table B. 
id    boardid    schoolid     subject     cnt1   cnt2  cnt3 ....
=================================================================
1       20         21           f     
2       20         21           r
3       20         21           w
4       20         21           m
5       20         30           r
6       20         30           w
7       20         30           m

Suppose the counts are just integers. Notice that there is no subject = f for schoolid = 30. Similarly, for most schools, some subject dosnt exist. You might have a schoolid that has just r, w or some that are just r, m, f.. 
So what I want to do is have 4 consistent rows for each school, and the row that dosnt exist I want dummy values. I thought about creating a secondary table
drop table #A
Select * into #A FROM 
(
select [subject_s] = 'r', orderNo = 1
union all
select [subject_s] = 'w', orderNo = 2
union all
select [subject_s] = 'm', orderNo = 3
union all
select [subject_s] = 'f', orderNo = 4
) z

and doing some joins on them, but I've gotten NO where. I've tried inner join, left outer, cross join, everything. I've even tried to make cartesian product. I think my cartesian product messes up because I have orderno in there so it makes 16 rows per row in the main table. Actually typing this out, I realize if I remove the orderno, apply the cartesian product and then add orderno in later, it might work but I am interested to see what you guys can come up with. I am stumped.
End result
id    boardid    schoolid     subject     cnt1   cnt2  cnt3 ....
=================================================================
1       20         21           r     
2       20         21           w
3       20         21           m
4       20         21           f
5       20         30           r
6       20         30           w
7       20         30           m
7       20         30           f

A:

Try the following:
SELECT S.boardid, S.schoolid, A.[subject], B.cnt1, B.cnt2, B.cnt3
FROM (SELECT DISTINCT boardid, schoolid FROM YourTable) S
CROSS JOIN #A A
LEFT JOIN YourTable B
    ON B.boardid = S.boardid AND  B.schoolid = S.schoolid 
    AND A.[subject] = B.[subject]

