Sql查询每月结果,但如何查询?
此查询首先返回表下方的我。例如,;2009-06-01 00:00:00有人进入我的系统41次。我需要第二张桌子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
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