我想要排列多個系列,以便所有里程碑日期都設置爲零個月,這樣我就可以測量里程碑的前後效應。我希望能夠使用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