2009-12-17 4 views

Répondre

5

Ajoutez-le simplement au LEFT OUTER JOIN ... ON, puisqu'il s'agit d'une suite pour les lignes jointes autant que je comprends la question.

Quelque chose comme ceci:

WITH DateRange(date) AS (
    SELECT @dateFrom dt 
    UNION ALL 
    SELECT DATEADD(dd, 1, date) date FROM DateRange WHERE date < @dateTo 
) 
SELECT DateRange.date, count(incident.id) 
FROM DateRange 
LEFT OUTER JOIN incident 
    ON incident.date >= DateRange.date 
    AND incident.date < DATEADD(dd, 1, DateRange.date) 
    AND incident.status = 'E' 
GROUP BY DateRange.date 
ORDER BY DateRange.date 
+0

donc évidente et pourtant je ne savais pas qu'on pouvait faire ça, merci! – NibblyPig

0

Comme vous avez dit dans votre question, mettre la condition dans votre clause WHERE se efficacement votre LEFT JOIN dans un INNER JOIN.

Vous devez ajouter ceci à vos critères LEFT JOIN car il s'agit d'une condition de la jointure.

donc quelque chose comme table1

LEFT JOIN table2 ON table1.field = table2.field AND table1.status='E'