2016-03-24 14 views
0

Ben kolonlar şirket adı ile tablo adında bir firma olduk vb tarihini, bu ay için oluşturulan şirketlerin sayısını almak istiyorumAylık akıllıca sayım

oluşturun.

Ben

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 

Çıktı Bu saklı yordam haftalık akıllıca sayım için saklı yordam

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

Beklenen çıkış benim saklı yordam içinde değiştirmek gerekiyor

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

olduğunu var aylık bilge sayısını almak için? Böyle

cevap

0

şey:

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

Ben basitlik için biçimlendirme saklı yordam atlandı.