2016-02-29 6 views
0
ID | Equipment | HireDate | HireTodate | ActualOffhireDate 
--------------------------------------------------------------------- 
01 | Printer  | 01/01/2013 | 31/12/2016 | 
02 | Printer  | 01/05/2015 | 31/12/2016 | 
03 | Laptop  | 17/01/2016 | 31/12/2016 | 
04 | Laptop  | 01/01/2015 | 31/12/2016 | 28/01/2016 

У меня, как выше таблицы, и хотел бы получить количество, основываясь на неделю (с пятницы до thurday) в течение месяца января 2016 года в соответствии с нижеSQL TSQL запрос, чтобы получить количество оборудования на еженедельной основе

Equipment | January count | Week 1| Week 2| Week 3| Week 4 
------------------------------------------------------------------ 
Printer | 02   | 02 | 02 | 02 | 02 
Laptop | 02   | 01 | 01 | 02 | 01 
+0

Возможно, с субботы по пятницу или с пятницы по четверг? – jarlh

+0

Я не могу получить число недель, используя условие между – Eddie

+2

Какой SQL-код вы пытались? –

ответ

0

Необходимо иметь таблицу календаря, которая помогает в обработке таких запросов очень быстро и с минимальными усилиями.

Вот один из способов, который я использовал для создания calendar table..and это выглядит, как показано ниже в моем окружении ...

enter image description here

После того как вы календарную таблицу, все, что вам нужно сделать, это присоединиться дата которой вы хотите посчитать, который так же просто, как показано ниже

select 
equipment, 
count(*) as 'Jancount', 
sum(case when wkno =1 then 1 else 0 end) 'Week 1', 
sum(case when wkno =2 then 1 else 0 end) 'Week 2', 
sum(case when wkno =3 then 1 else 0 end) 'Week 3', 
sum(case when wkno =4 then 1 else 0 end) 'Week 4' 
from 
calendar c 
join testtable p 
on p.hiretodate=c.date 
group by equipment 

Выход:
enter image description here