2016-02-29 79 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 

對我有像上表中,並希望按照下面的SQL TSQL查詢來獲取設備的數量每週

獲得基於每週計數(從星期五到thurday)爲一月2016
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