@Quinn_Wildman The problem is not only with null to 0, because of the WHERE clause, second column is truncated and display the value only if first column is populated
SELECT
MAIN.DATE,
SUM(X.Gross),
SUM(Y.Gross)
FROM `MAIN_TABLE` AS MAIN
LEFT JOIN `TABLE1` AS X ON MAIN.Date = X.Date
LEFT JOIN `TABLE2` AS Y ON MAIN.Date = Y.Date
WHERE (X.IsVoided is false) AND (Y.IsVoided is false)
GROUP BY 1
ORDER BY 1 DESC
LIMIT 500
I would probably lean more towards using a coalsesce approach…
SELECT
MAIN.DATE,
SUM(COALESCE(X.Gross, 0)),
SUM(COALESCE(Y.Gross, 0))
FROM `MAIN_TABLE` AS MAIN
LEFT JOIN `TABLE1` AS X ON MAIN.Date = X.Date
LEFT JOIN `TABLE2` AS Y ON MAIN.Date = Y.Date
WHERE (X.IsVoided is false) AND (Y.IsVoided is false)
GROUP BY 1
ORDER BY 1 DESC
LIMIT 500