2016-07-20 4 views
0

Ich versuche, die Anzahl der Treffer für einen bestimmten Betreiber als Summe für eine Woche zu zählen, dann jeden TagSQL Server 2008 Count in Case-Anweisung gleiches Ergebnis ergeben mit unterschiedlichen Parametern

kann ich die declare hinzufügen und wählen Sie Anweisung für die Variablen, wenn nötig, aber sie haben den gewünschten Effekt mit einer ähnlichen Summenfunktion, so dass dies unnötig erscheint.

Ich bekomme jeden Tag das gleiche Ergebnis, was der gesamten Woche entspricht - nicht der gewünschte Effekt. Kann irgendjemand etwas darüber sagen, warum die zwischen-Aussagen scheinbar ignoriert werden?

SELECT HITS.OPPO 
, COUNT(CASE WHEN STOP_TIME BETWEEN @StartMinSix and @TodayEnd  THEN 1 ELSE 0 END) AS 'COUNT_TOTAL' 
, COUNT(CASE WHEN STOP_TIME BETWEEN @TodayDate  and @TodayEnd  THEN 1 ELSE 0 END) AS 'COUNT_TODAY' 
, COUNT(CASE WHEN STOP_TIME BETWEEN @StartMinOne and @TodayDate  THEN 1 ELSE 0 END) AS 'COUNT_YESTERDAY' 
, COUNT(CASE WHEN STOP_TIME BETWEEN @StartMinTwo and @StartMinOne THEN 1 ELSE 0 END) AS 'COUNT_TODAY_MIN2' 
, COUNT(CASE WHEN STOP_TIME BETWEEN @StartMinThree and @StartMinTwo THEN 1 ELSE 0 END) AS 'COUNT_TODAY_MIN3' 
, COUNT(CASE WHEN STOP_TIME BETWEEN @StartMinFour and @StartMinThree THEN 1 ELSE 0 END) AS 'COUNT_TODAY_MIN4' 
, COUNT(CASE WHEN STOP_TIME BETWEEN @StartMinFive and @StartMinFour THEN 1 ELSE 0 END) AS 'COUNT_TODAY_MIN5' 
, COUNT(CASE WHEN STOP_TIME BETWEEN @StartMinSix and @StartMinFive THEN 1 ELSE 0 END) AS 'COUNT_TODAY_MIN6' 

FROM HITS 

WHERE HITS.OPPO = @operator 
    and STOP_TIME > @StartMinSix 
    and ESTIMATED_COST > 0 
GROUP BY HITS.OPPO 
+2

Versuchen Sie, die Anzahl zu addieren. –

+0

Gut gespielt Herr - wenn Sie dies als eine Antwort setzen, werde ich akzeptieren. Vielen Dank. – User632716

+1

Sie zählen, wie viele 0 und 1 Sie haben, wenn Sie kryptisch sein wollen, ändern Sie die 0 zu Null – Cato

Antwort

1

Ich glaube, Sie brauchen SUM statt COUNT

SELECT HITS.OPPO 
    , SUM(CASE WHEN STOP_TIME BETWEEN @StartMinSix and @TodayEnd  THEN 1 ELSE 0 END) AS 'COUNT_TOTAL' 
    , SUM(CASE WHEN STOP_TIME BETWEEN @TodayDate  and @TodayEnd  THEN 1 ELSE 0 END) AS 'COUNT_TODAY' 
    , SUM(CASE WHEN STOP_TIME BETWEEN @StartMinOne and @TodayDate  THEN 1 ELSE 0 END) AS 'COUNT_YESTERDAY' 
    , SUM(CASE WHEN STOP_TIME BETWEEN @StartMinTwo and @StartMinOne THEN 1 ELSE 0 END) AS 'COUNT_TODAY_MIN2' 
    , SUM(CASE WHEN STOP_TIME BETWEEN @StartMinThree and @StartMinTwo THEN 1 ELSE 0 END) AS 'COUNT_TODAY_MIN3' 
    , SUM(CASE WHEN STOP_TIME BETWEEN @StartMinFour and @StartMinThree THEN 1 ELSE 0 END) AS 'COUNT_TODAY_MIN4' 
    , SUM(CASE WHEN STOP_TIME BETWEEN @StartMinFive and @StartMinFour THEN 1 ELSE 0 END) AS 'COUNT_TODAY_MIN5' 
    , SUM(CASE WHEN STOP_TIME BETWEEN @StartMinSix and @StartMinFive THEN 1 ELSE 0 END) AS 'COUNT_TODAY_MIN6' 

    FROM HITS 

    WHERE HITS.OPPO = @operator 
     and STOP_TIME > @StartMinSix 
     and ESTIMATED_COST > 0 
    GROUP BY HITS.OPPO 
1

SELECT HITS.OPPO , COUNT (CASE WHEN STOP_TIME ZWISCHEN @StartMinSix und @TodayEnd THEN 1 ELSE NULL END) AS 'COUNT_TOTAL' .... etc