【发布时间】:2014-06-20 21:15:27
【问题描述】:
我有下表:
| ID | Name | DateA | TimeToWork | TimeWorked |
|:--:|:----:|:----------:|:----------:|:----------:|
| 1 |Frank | 2013-01-01 | 8 | 5 |
| 2 |Frank | 2013-01-02 | 8 | NULL |
| 3 |Frank | 2013-01-03 | 8 | 7 |
| 4 |Jules | 2013-01-01 | 4 | 9 |
| 5 |Jules | 2013-01-02 | 4 | NULL |
| 6 |Jules | 2013-01-03 | 4 | 3 |
表格很长,每个人一年中的每一天都有一个条目。对于每个人,我都有他工作的日期 (DateA)、他根据合同必须工作的时间 (TimeToWork) 和他的工作时间 (TimeWorked)。正如你所看到的,有些日子一个人在他不得不工作的日子里没有工作。这是一个人加班一整天的时候。
我试图完成的是从上面的第一个表格中得到下表。
| Name | January | Feburary | March | ... | Sum |
|:----:|:----------:|:--------:|:-----:|:---:|:---:|
|Frank | 2 | 0 | 1 | ... | 12 |
|Jules | 5 | 1 | 3 | ... | 10 |
对于每个月,我想计算一个人休假一整天的所有天数,并在 Sum 列中进行汇总。
我尝试了Select (case when Datetime(month, DateA = 1 then count(case when timetowork - (case when timeworked then 0 end) = timetowork then 1 else 0 end) end) as 'January' 之类的方法,但我的 TSQL 不是那么好,而且代码根本不起作用。顺便说一句,我的选择命令大约有 40 行。
如果有人可以帮助我或给我一个好的来源的链接,我真的很感激。
【问题讨论】: