Sql查询每月结果,但如何查询?

Sql查询每月结果,但如何查询?,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,此查询首先返回表下方的我。例如,;2009-06-01 00:00:00有人进入我的系统41次。我需要第二张桌子 declare @date1 smalldatetime, @date2 smalldatetime , @countgap int, @page nvarchar(100) select @date1='2009-01-01', @date2='2009-12-30 23:59:59' ,@countgap=1, @page='Tüm Sayfalar' declare

此查询首先返回表下方的我。例如,;2009-06-01 00:00:00有人进入我的系统41次。我需要第二张桌子

 declare @date1 smalldatetime, @date2 smalldatetime , @countgap int, @page nvarchar(100)   
select @date1='2009-01-01', @date2='2009-12-30 23:59:59' ,@countgap=1, @page='Tüm Sayfalar'

declare @@date1 smalldatetime,@@date2 smalldatetime , @COUNT INT          
   select @@date1=@date1, @@date2=@date2 , @COUNT=1          
   select @@date1 TARIH , @COUNT SIRA           
  INTO #TMP          
  WHILE @@date1 < @@date2           
BEGIN           
   SELECT  @@date1 = DATEadd(month,@countgap,@@date1) , @COUNT = @COUNT +1          
   INSERT INTO #TMP          
   select @@date1 TARIH , @COUNT SIRA           
END  
  select t1.TARIH, t1.SIRA, VISITINGCOUNT = isnull(t2.TARIH, 0)          
   from #TMP t1          
   left join ( 
    select count(page) as TARIH,             
      datepart(month,Date) as SIRA           
    from scr_StatisticaLog            
    where Date between @date1 and  @date2  and 
         (Page=@page or @page='Tüm Sayfalar') and 
          ProcessType='PageView'       
    GROUP BY datepart(month,Date)
             )t2 on t2.SIRA = t1.SIRA          
    order by t1.SIRA          
  return     
你需要的是一个有着每一个日期的卡片。在那之后,你就离开了加入它,得到了你的第二张桌子

编辑:啊。。海报上的新信息会使此答案无效…

使用以下格式设置日期:

SELECT 
  DATEPART(year,DateColumn) + '-' + DATENAME(month,DateColumn) AS FormattedDate
FROM
  Table
韦尔博格的答案是有效的


我会走得更远一点。在MySQL的土地上,我只会在日期上做一个左(10),然后分组。然后,您可以一次完成整个查询,而不需要临时表或循环。我认为SQL server会允许您为日期添加子字符串,但如果没有,您可以按照Welbog向您展示的方式创建日期。

第二个表是什么?您只是问如何设置日期格式?是的,我需要“2009年1月12日1”如果您的答案完全无效,请删除它。


2009-January        12  1

SELECT 
  DATEPART(year,DateColumn) + '-' + DATENAME(month,DateColumn) AS FormattedDate
FROM
  Table