我現在這個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