【问题标题】:SQL TSQL Query to get the count of equipment on weekly basisSQL TSQL 查询以每周获取设备数量
【发布时间】:2016-02-29 12:59:29
【问题描述】:
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

我喜欢上表,并希望根据 2016 年 1 月的每周(从星期五到星期四)获得计数,如下所示

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

【问题讨论】:

  • 周六到周五,或者周五到周四?
  • 我无法使用 between 条件获得每周计数
  • 你试过什么SQL?
  • 你需要有日历表,请看我的回答

标签: sql tsql count sql-server-2008-r2 helpers


【解决方案1】:

您需要有一个日历表,它可以帮助您非常快速且轻松地处理此类查询。

这是我用来生成calendar 表的一种方式。它在我的环境中如下所示...

一旦你有了日历表,你所要做的就是加入你想要计算的日期,就像下面这样简单

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

输出:

【讨论】:

    猜你喜欢
    • 2015-03-26
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 2013-01-26
    • 1970-01-01
    • 2011-04-04
    相关资源
    最近更新 更多