我有以下内容:
http://sqlfiddle.com/#!2/fca3d/1
我现在尝试在一年中每周添加一行,并相应地过滤联系人。新表格如下:
Status 1 Status 2 Status 3
Week 1 3 4 2
Week 2 1 5 3
Week 3 2 2 4
我认为需要使用DATEADD,但是我在如何开始更改查询方面感到茫然。任何帮助将非常感激!
答案 0 :(得分:2)
只需添加GROUP BY子句:
SELECT
WEEK(created),
SUM(case WHEN status = 1 then 1 else 0 end) Status1,
SUM(case WHEN status = 2 then 1 else 0 end) Status2,
SUM(case WHEN status = 3 then 1 else 0 end) Status3,
SUM(case WHEN status = 4 then 1 else 0 end) Status4,
SUM(case WHEN status = 5 then 1 else 0 end) Status5
FROM contacts
GROUP BY WEEK(created), YEAR(created);
按年分组也很重要,否则无论年份如何,它都会按周分组 此外,如果一周内没有数据,则不会创建任何行。你需要另一组数据。
修改:以下是SQL Server 2012 [SQLFiddle]
的示例