代码之家  ›  专栏  ›  技术社区  ›  The real napster

每个日期的SQL计数

  •  23
  • The real napster  · 技术社区  · 17 年前

    我有以下需要

    我有一个记录表,记录每天生成的som Lead。

    假设该表如下所示:

    tbl_leads
    id int,
    first_name nvarchar(100),
    last_name nvarchar(100),
    created_date datetime
    

    因此,结果集应该如下所示:

    counted_leads | count_date
    5             | 2009-04-30
    7             | 2009-04-29
    5             | 2009-04-28
    7             | 2009-04-27
    

    ... 等等

    我当前的解决方案是使用c#中的foreach进行迭代,但我非常希望将其交给sql server,而不是sp。

    7 回复  |  直到 17 年前
        1
  •  45
  •   Tom H zenazn    17 年前

    您可以使用:

    Select
         count(created_date) as counted_leads,
         created_date as count_date
    from
         table
    group by
         created_date
    
        2
  •  9
  •   Dave Swersky    17 年前

    您创建的日期字段为 datetime

    SELECT COUNT(created_date), created_date 
    FROM table 
    WHERE DATEDIFF(created_date, getdate()) < 10
    GROUP BY convert(varchar, created_date, 101)
    
        3
  •  3
  •   luviktor    14 年前

    最有效的方法是按整数进行聚合,然后转换回datetime进行表示。

    select 
        cast(daybucket - 1 as datetime) as count_date,
        counted_leads
    from 
        (select 
             cast(created_date as int) as DayBucket,
             count(*) as counted_leads
         from mytable
         group by cast(created_date as int) ) as countByDay
    
        4
  •  2
  •   user3411804    12 年前

    Select
         count(created_date) as counted_leads,
         Convert(date,created_date) as count_date 
    from table
    group by Convert(date,created_date)
    
        5
  •  2
  •   Pang Ajmal PraveeN    8 年前

    cast(DATEADD(DAY, DATEDIFF(DAY, 0, created_date), 0) as int) as DayBucket
    
        6
  •  1
  •   northpole    17 年前
    Select count(created_date) total
         , created_dt
      from table
    group by created_date
    order by created_date desc
    
        7
  •  1
  •   Suvabrata Roy    15 年前
    CREATE PROCEDURE [dbo].[sp_Myforeach_Date]
        -- Add the parameters for the stored procedure here
        @SatrtDate as DateTime,
        @EndDate as dateTime,
        @DatePart as varchar(2),
        @OutPutFormat as int 
    AS
    BEGIN
        -- SET NOCOUNT ON added to prevent extra result sets from
        -- interfering with SELECT statements.
        Declare @DateList Table
        (Date varchar(50))
    
        WHILE @SatrtDate<= @EndDate
        BEGIN
        INSERT @DateList (Date) values(Convert(varchar,@SatrtDate,@OutPutFormat))
        IF Upper(@DatePart)='DD'
        SET @SatrtDate= DateAdd(dd,1,@SatrtDate)
        IF Upper(@DatePart)='MM'
        SET @SatrtDate= DateAdd(mm,1,@SatrtDate)
        IF Upper(@DatePart)='YY'
        SET @SatrtDate= DateAdd(yy,1,@SatrtDate)
        END 
        SELECT * FROM @DateList
    END
    

    只需输入此代码并以这种方式调用SP

    exec sp_Myforeach_Date @SatrtDate='03 Jan 2010',@EndDate='03 Mar 2010',@DatePart='dd',@OutPutFormat=106
    

    Suvabrata Roy ICRA Online Ltd. Kolkata