SELECT COALESCE(CurrMonth.Name, YTD.Name) AS Name, CurrMonth.Total AS Total, YTD.Total AS YearToDate
FROM (
SELECT Name, COUNT(Column1) AS Total
FROM Table1
WHERE Occurred_Date BETWEEN '2010-06-01' AND '2010-06-30' --Total
GROUP BY Name
) AS CurrMonth
FULL OUTER JOIN
(
SELECT Name, COUNT(Column1) AS Total
FROM Table1
WHERE Occurred_Date BETWEEN '2010-01-01' AND '2010-06-30' --YearToDate
GROUP BY Name
) AS YTD
ON CurrMonth.Name = YTD.Name
La jointure externe complète est pas nécessaire, mais démontre à quel point vous pourriez avoir besoin pour traiter un cas où un ensemble n'est pas un sous-ensemble strict de l'autre. J'utiliserais généralement la sous-requête YFT LEFT JOIN pour la sous-requête du mois en cours.
Une autre stratégie - avec CASE:
SELECT Name
,COUNT(CASE WHEN Occurred_Date BETWEEN '2010-06-01' AND '2010-06-30' THEN Column1 ELSE NULL END) AS Total
,COUNT(CASE WHEN Occurred_Date BETWEEN '2010-01-01' AND '2010-06-30' THEN Column1 ELSE NULL END) AS YearToDate
FROM Table1
WHERE Occurred_Date BETWEEN '2010-06-01' AND '2010-06-30' -- (unnecessary)
OR Occurred_Date BETWEEN '2010-01-01' AND '2010-06-30'
GROUP BY Name
Vous ne savez pas si cela est possible sans provoquer de conflit dans le jeu de résultats. – VoodooChild