想象我有客戶的表已經從一些退訂:查詢號碼沒有出現在另一個表的日期範圍
DateMonthID customerID
201301 123
201301 321
201302 987
201303 567
201303 728
等等等等
和客戶的另一個表每個月他們的訂閱用戶
DateMonthID customerID subscriptionType
... ... 1
... ... 3
... ... 2
... ... 3
等等等等
我需要對第一個表中沒有出現在第二個表中的所有行進行計數3個月。例如,我需要的,如果他沒有第二個表月間出現的201302(2月)和201305計數客戶987(5月)
目前,我有以下幾點:
SELECT
COUNT(1) AS Total,
table1.DateMonthID AS MonthID
FROM
table1
WHERE
table1.DateMonthID <= 201212-3
AND NOT EXISTS (SELECT * FROM table2
WHERE (table2.DateMonthID >= table1.DateMonthID AND table2.DateMonthID <= (table1.month_key + 3))
AND table2.customerID = table1.customerID)
GROUP BY
table1.DateMonthID
這使我看起來像
Total MonthID
1000 201301
2345 201302
4532 201303
986 201304
etc etc
這看起來不錯,但我想現在要做的也是一羣以subscriptiontype輸出。我確定這意味着我需要做一個連接,但是對於SQL來說很新,我對於什麼連接和哪裏是無能爲力的。我嘗試過在customerIds和innerId之間進行內部連接,但最終總計超過了表1中對應月份的記錄數量。
我不能對此進行測試,直到星期一,但它看起來不錯。雖然我不想按表1屬性進行分組? – EvilWeebl 2013-02-23 10:48:10
你是對的,我忘了你想按類型分組,而不是按訂閱鍵。 – 2013-02-23 19:35:06
嗨,我已經嘗試過你的解決方案,但與Alexanders解決方案一樣,我沒有得到任何結果,我不確定這個連接到一個名爲訂戶的表是從哪裏來的? – EvilWeebl 2013-02-25 10:15:34