The strangest SQL I've ever written
Nov. 2nd, 2007 12:30 pmSELECT
-- various aggregation functions
FROM RecipientGroup g
CROSS JOIN
(SELECT 0 AS b_UsingTestData UNION SELECT 1) AS TestDataFlag
LEFT OUTER JOIN
RecipientData rd ON rd.GroupID=g.GroupID
AND rd.b_IsTestRecord = TestDataFlag.b_UsingTestData
GROUP BY
g.GroupID, TestDataFlag.b_UsingTestData
ORDER BY
g.GroupID, TestDataFlag.b_UsingTestData
OK, SQLheads, is there a better way to ensure that every group's aggregate data includes rows for both the test records and the live records, even if a particular group only has test or live data? Because that cross join in bold feels like it's either incredibly elegant and idiomatic or the ugliest kludgy hack ever, and I'm too close to it to be able to tell which. (This is for Microsoft SQL Server 2000 and 2005)