我想要排列多个系列,以便所有里程碑日期都设置为零个月,这样我就可以测量里程碑的前后效应。我希望能够使用SQL服务器来做到这一点。如何将事件计数分配给SQL中的相对日期值?
你可以看到我从this data.stackexchange.com query开始的近似值。此示例查询返回一个基本如下所示的表:
+------------+-------------+---------+---------+---------+---------+---------+
| UserID | BadgeDate | 2014-01 | 2014-02 | 2014-03 | 2014-04 | 2014-05 |
+------------+-------------+---------+---------+---------+---------+---------+
| 7 | 2014-01-02 | 232 | 22 | 19 | 77 | 11 |
+------------+-------------+---------+---------+---------+---------+---------+
| 89 | 2014-04-02 | 345 | 45 | 564 | 13 | 122 |
+------------+-------------+---------+---------+---------+---------+---------+
| 678 | 2014-03-11 | 55 | 14 | 17 | 222 | 109 |
+------------+-------------+---------+---------+---------+---------+---------+
| 897 | 2014-03-07 | 234 | 56 | 201 | 19 | 55 |
+------------+-------------+---------+---------+---------+---------+---------+
| 789 | 2014-02-22 | 331 | 33 | 67 | 108 | 111 |
+------------+-------------+---------+---------+---------+---------+---------+
| 989 | 2014-01-09 | 12 | 89 | 97 | 125 | 323 |
+------------+-------------+---------+---------+---------+---------+---------+
这不是我最终寻找的。月份列中的值是每月答案的计数。我想要的是一张表格,其计数在之间,相对月份数量为(由BadgeDate定义)(BadgeDate月份设置为每个用户月份0,较早的月份设置为负的相对月份#s,后面的月份设置为正相对月份#s )。
这是可能的SQL?或者有没有办法在Excel中使用上表来完成它?
生成此表后,我计划平均相对月份总数来绘制一个线图,该线图有望在相对月零时显示明显的拐点。如果没有明显的弯曲,我可以假设里程碑对Y轴度量的影响可以忽略不计。 (我甚至不太确定这种图表的名称,如果我知道我正在讨论的内容的适当条款,Google可能会更有帮助。)
任何想法?
对不起,我可能不清楚。上面提供的表格是我已经拥有的,而不是我希望返回的。我编辑了这个问题来强调这个事实。 – samthebrand 2014-09-24 04:20:30
@SamtheBrand:好的。您可以UNPIVOT,按月执行日期差异,然后在连续的子查询中再次跳出。 Aaron Bertrand在此处有一个脚本(http://www.mssqltips.com/sqlservertip/2783/script-to-create-dynamic-pivot-queries-in-sql-server/)用于动态数据透视查询生成。 Itzik Ben-Gan使用CROSS APPLY发布了一个优雅的UNPIVOT,但我现在还不能找到参考。 – 2014-09-24 04:31:04
@SamtheBrand:Itzik的CROSS APPLY UNPIVOT的源代码可以在这里找到:http://www.sql.co.il/books/source_code/Advanced%20T-SQL.txt。搜索字符串' - *** Unpivoting'来查找示例SQL。 – 2014-09-24 04:36:59