Definitely not a cross join. You want a "full outer join" (includes rows from both tables even when they don't match). Here's the basic idea (minus the "where" clause):
SELECT COALESCE(fDays.DistrictID, sDays.DistrictID) DistrictID , fDays.DaysAllotted AS 'Jan.-Jun.' , sDays.DaysAllotted AS 'Jul.-Dec.' FROM law_DeputyDaysAllotment fDays FULL OUTER JOIN law_DeputyDaysAllotment sDays ON fDays.DistrictID = sDays.DistrictID AND fDays.Year = sDays.Year AND fDays.Type = sDays.Type
I did this by hand and didn't check it, so there may be one or two syntax errors lurking in there.