末我有需要总量可达每周注册的数量,在过去的十年星期,显示为(SQL)分组由
“周结束二零零九年十月十日”的报告500"
“周结束10月3日,2009年” 400"
“周刊2009年结束9月26日,” 1000"
等等
这里是我的查询:
SELECT Count(*) as [Total]
,Week = DateAdd(day, -1 * datepart(dw, CONVERT(varchar,CreateDate,101)), CONVERT(varchar,CreateDate,101))
FROM aspnet_membership WITH (nolock)
WHERE CreateDate BETWEEN CAST(CONVERT(varchar, DATEADD(ww, -10, DATEADD(dd, -(DATEPART(dw, GETDATE()) - 1), GETDATE())), 101) AS DATETIME) AND
DateAdd(day, -1 * datepart(dw, CONVERT(varchar,Getdate(),101)), CONVERT(varchar,GetDate(),101))
GROUP BY DateAdd(day, -1 * datepart(dw, CONVERT(varchar,CreateDate,101)), CONVERT(varchar,CreateDate,101))
ORDER BY [Week] DESC
子句之间2009年8月2日和10/10/2009之间做了,但结果不包含任何记录,10月10日当周,甚至尽管数据库中有数千个。
我在猜测我是由不正确的东西组成的东西。
任何帮助将不胜感激。
公式工作,但想知道为什么你CONVERT CreateDate到一个varchar字段?它似乎没有CONVERT工作正常。 – Andomar 2009-10-13 23:28:10
我刚刚复制了JackM的公式 - 我认为他有一些理由来进行转换。 – Martha 2009-10-14 14:10:18