繁体   English   中英

将日期设置为星期几

[英]Pivoting Dates to Day of week

我目前正在尝试创建一个显示员工工作时间的表格。

这是我的数据(简化):

|ID    |Client |Task  |Hours  |Date      |
------------------------------------------
|1     |ABC    |A     |3      |09/06/2014|
|2     |ABC    |A     |5      |09/06/2014|
|3     |DEF    |B     |8      |10/06/2014|
|4     |DEF    |C     |8      |11/06/2014|
|5     |ABC    |A     |8      |12/06/2014|

这是输出的样子:

|Client |Task |Sun |Mon |Tue |Wed |Thu |Fri |Sat |
--------------------------------------------------
|ABC    |A    |    |3   |    |    |8   |    |    |
|ABC    |A    |    |5   |    |    |    |    |    |
|DEF    |B    |    |    |8   |    |    |    |    |
|DEF    |C    |    |    |    |8   |    |    |    |

我的问题真的很接近这个问题。 但是有一个主要的区别:就我而言,对于Client-Task-Date的相同组合,可能有多个值。

如期望的输出所示,即使他们为同一客户和同一任务工作,员工有时也会分开工作时间,而且由于网格中显示的所有数据都将与最终用户交互,因此我无法使用汇总。

有没有办法使用数据透视表或任何其他SQL机制(例如CASE WHEN)获取此类输出?

WITH t AS (
  SELECT
    Client,
    Task,
    Hours,
    ROW_NUMBER() OVER(PARTITION BY Client,Task,Date ORDER BY Date) rn,
    DATEPART(dw,date) DayOfWeek
  FROM MyTable
)
SELECT Client, Task, [1] Sun, [2] Mon, [3] Tues, [4] Wed, [5] Thu, [6] Fri, [7] Sat
FROM t
PIVOT(SUM(Hours) FOR DayOfWeek IN ([1],[2],[3],[4],[5],[6],[7])) p

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM