Sql 每月每周的类型计数

Sql 每月每周的类型计数,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有如下数据 --日期------类型 2014年6月1日 2014年6月2日-ss 2014年6月3日-pp 2014年6月4日-PP 2014年6月5日-ss 2014年6月6日-pp 2014年6月7日 2014年6月8日 2014年6月9日第页 2014年6月10日第页 2014年6月11日ss 2014年6月12日第页 2014年6月13日第页 2014年6月14日 2014年6月15日 结果应该是这样的 ------2014年6月2日至2014年6月6日------2014年6月9日

我有如下数据

--日期------类型

2014年6月1日

2014年6月2日-ss

2014年6月3日-pp

2014年6月4日-PP

2014年6月5日-ss

2014年6月6日-pp

2014年6月7日
2014年6月8日

2014年6月9日第页

2014年6月10日第页

2014年6月11日ss

2014年6月12日第页

2014年6月13日第页

2014年6月14日
2014年6月15日

结果应该是这样的

------2014年6月2日至2014年6月6日------2014年6月9日至2014年6月13日

ss------2-----------------1

pp------3-----------------4


您可以使用以下选项:

小提琴:

它在功能上等同于您想要的,但每周都是一行(而不是一列)

另一方面,如果没有关于一周开始/结束的数据,则dt_from和dt_to不一定是一周的开始/结束,但它仍然按周分组。如果要显示周和年,可以将我放入group by子句的内容添加到select列表中,并在该列中获得年和周

此外,如果您从未查询超过1年的时间范围,您可以通过以下方式分组:

group by datepart(week, dt), type

在第一次查询中提取年份,以避免2013年的第12周、第13周等与2014年的第12周、第13周等合并,前提是您要查询2年以上的数据。如果您总是在同一年(或月)内查询,则不需要该字段。

日期列的数据类型是什么?在SQL中,列名不能是动态的。如果希望查询在任意月份工作,则需要使用动态SQL。(我建议改为使用日期范围、类型、计数的结构。)日期列日期类型为dattime@BrianDeMilia
group by datepart(week, dt), type