2015-06-05 101 views
-3

我有表数据表需要SQL查询情况下

ID Task Response by Created 
1 mark    2015-03-01 3:02:44 PM 
2 harry    2015-03-02 3:06:22 PM 
3 alex    2015-03-01 3:14:02 PM 
4 jim    2015-03-30 3:18:33 PM 
5 jim    2015-03-30 3:24:49 PM 
6 alex    2015-03-30 3:34:35 PM 

现在我想按周和输出一样的任务响应

week mark harry alex jim 
1  1  1  2  2 

名来算占全年任务的响应的N多

+6

那么,你做了什么? – hkutluay

+1

看看https://technet.microsoft.com/en-us/library/ms177410%28v=sql.105%29.aspx –

+0

你还尝试过什么吗? – Nazmul

回答

1

我已经给出了基于你的输出结果集,但完全不能假设你有3月份的周结果(他们会给10和14)

declare @t table (Id int,Task varchar(20),created date) 
insert into @t (Id,Task,created)values (1,'mark','2015-01-01 3:02:44 PM'), 
(2,'harry','2015-01-01 3:02:44 PM'), 
(3,'alex','2015-01-01 3:02:44 PM'), 
(4,'jim','2015-01-01 3:02:44 PM'), 
(5,'jim','2015-01-01 3:02:44 PM'), 
(6,'alex','2015-01-01 3:02:44 PM') 

;with CTE as(
SELECT [mark],[harry],[alex],[jim],created FROM (
Select [mark],[harry],[alex],[jim],created from (
Select A.Id,A.Task,A.created,COUNT(A.RN)OVER(PARTITION BY TASK)R from (select ID,Task,created,ROW_NUMBER()OVER(PARTITION BY task order by task desc)RN from @t 
GROUP BY ID,Task,created)A)B 
PIVOT(MAX(R)FOR Task IN ([mark],[harry],[alex],[jim]))P)V 


GROUP BY [mark],[harry],[alex],[jim],created) 
select DATEPART(week,created)Week,MIN(mark)[mark],MIN(harry)[harry],MIN(alex)[alex],MIN(jim)[jim] FROM CTE 
GROUP BY created