2016-03-24 5 views
0

ich die Tabelle mit dem Namen Firma mit Spalten Firmennamen, erstellen Datum usw.Monats weise Zähldatum Berechnung mit

Ich möchte die Anzahl der Unternehmen für diesen Monat erstellt bekommen.

Ich habe die gespeicherte Prozedur für die wöchentliche weise Zählung

CREATE PROCEDURE [dbo].[pr_NewCmpCount] 
          @StartDate DATETIME = NULL --'20130508' 
         , @EndDate DATETIME = NULL --'20130515' 

    AS 
    BEGIN 
    DECLARE @DateDiff INT 
     , @MainDate DATETIME 


    IF @StartDate IS NULL AND @EndDate IS NULL 
    BEGIN 
    IF (DATEPART(dw,GETDATE()) > 3) 

    SET @DateDiff = 0 
    ELSE 
    SET @DateDiff = 6 

    SET @MainDate = DATEADD (MINUTE, -30, DATEADD (HOUR, -5, DATEADD(wk, DATEDIFF(wk,@DateDiff,GETDATE()), 0))) 


    SELECT @StartDate = DATEADD (MINUTE, -30, DATEADD (HOUR, -5, DATEADD(wk, DATEDIFF(wk,0,@MainDate), -5))) 

    SELECT @EndDate = DATEADD (MINUTE, -30, DATEADD (HOUR, -5, DATEADD(wk, DATEDIFF(wk,0,@MainDate), 2))) 

    SELECT CONVERT (VARCHAR, Count(*)) AS [Count] 
    , CONVERT (DATE, DATEADD (DD, 1, @StartDate)) AS [StartDate] 
    , CONVERT (DATE, @EndDate) AS [EndDate] 
    FROM 
    Company WITH(NOLOCK) 
    WHERE CreateDate >= @StartDate 
    AND CreateDate < @EndDate 

    END 
    ELSE 
    IF ((CONVERT (DATE, @StartDate) < CONVERT (DATE, @EndDate)) AND (CONVERT (DATE, @EndDate) < CONVERT (DATE, GETDATE()))) 

    BEGIN  

    SET @StartDate = CONVERT (DATE, @StartDate) 

    SET @EndDate = CONVERT (DATE, @EndDate) 

    SELECT @StartDate = DATEADD (MINUTE, -30, DATEADD (HOUR, -5, @StartDate)) 

    SELECT @EndDate = DATEADD (MINUTE, 30, DATEADD (HOUR, 18, @EndDate)) 

    SELECT CONVERT (VARCHAR, Count(*)) AS [Count] 
    , CONVERT (DATE, DATEADD (DD, 1, @StartDate)) AS [StartDate] 
    , CONVERT (DATE, @EndDate) AS [EndDate] 
    FROM 
    Company WITH(NOLOCK) 
    WHERE CreateDate >= @StartDate 
    AND CreateDate < @EndDate 
    END 
    ELSE 
    SELECT 'Please Run After Tuesday of Every Week or Given the Valid Date' [Count] 
    , CONVERT (DATE, @StartDate) AS [StartDate] 
    , CONVERT (DATE, @EndDate) AS [EndDate] 

    END 

Ausgang für diese gespeicherte Prozedur ist

   Count Startdate  EndDate 
      10 2016-03-13  2016-03-22 

Erwartete Ausgabe

   Count Startdate  EndDate 
      20 2016-02-01  2016-02-29 

Wo muss ich in meine gespeicherten Prozedur ändern um monatlich weise zu zählen?

Antwort

0

Etwas wie folgt aus:

DECLARE @StartDt Date 
DECLARE @EndDt date 
SELECT @StartDt,@EndDt,Count(*) AS TotalCompanies FROM company 
WHERE [create date] BETWEEN @StartDt AND @EndDt 

ausgelassen ich die gespeicherte Prozedur Formatierung der Einfachheit halber.