我现在这个SQL:帮助与SQL获得每天点击数为今天1个月前
CREATE PROCEDURE dbo.sel_Track_HitsLast30Days(
@projectID int
)
AS
BEGIN
DECLARE @FirstDay smalldatetime, @NumberOfMonths int, @priorMonth smalldatetime
set @priorMonth = (SELECT CAST(
(
STR(YEAR(dateadd(m,-1, getDate()))) + '/' +
STR(MONTH(dateadd(m,-1, getDate()))) + '/' +
STR(DAY(dateadd(m,-1, getDate())))
)
AS DateTime
))
Select @FirstDay = @priorMonth, @NumberOfMonths = 1
;WITH Days AS (
SELECT @FirstDay as CalendarDay
UNION ALL
SELECT DATEADD(d, 1, CalendarDay) as CalendarDay
FROM Days
WHERE DATEADD(d, 1, CalendarDay) < DATEADD(m, @NumberOfMonths, @FirstDay+1)
)
SELECT calendarday,foundDate.TotalbyDate,foundDate.date FROM Days
LEFT OUTER JOIN (
SELECT
COUNT(LEFT(visitDateTime, 11)) AS TotalbyDate,substring(convert(char(10), CONVERT(char(10), visitDateTime, 121)), 1, 11) AS date
FROM
dbo.TrackingData
WHERE
visitDateTime >= dateadd(d, datediff(d, 0, getdate()), -30) and projectID = @projectID
GROUP BY substring(convert(char(10), CONVERT(char(10), visitDateTime, 121)), 1, 11)
) foundDate on foundDate.date = CalendarDay
order by
CalendarDay Desc
END
该工程确定,但它没有考虑到个月的第31天,我没有得到由于某种原因返回今天的日期。
我相信这可以更好地优化,太;) – DDiVita 2009-11-30 23:26:03
我真的想帮助,但这有点儿SQL我看着只重现金:) – JohnIdol 2009-12-01 00:03:28
我也没有提及我需要显示空白旁边的日期,可能没有任何结果。 – DDiVita 2009-12-01 02:38:14