2014-09-19 86 views
0

我們有兩列First_Issue和Expiry_IssueSQL集團按範圍

如果我想了解我有多少用戶,我們有問題1做這樣的查詢:

select COUNT(*) from Subscriber 
where First_issue <= 1 and Expiry_issue >= 1 

現在我想編寫一個查詢,顯示我們每個問題的用戶數量,不確定從哪裏開始,讚賞的指針。

+0

什麼是在第一個問題的價值?你能定義值的含義嗎 – Tushar 2014-09-19 23:49:21

+5

你能提供樣本數據和期望的結果嗎? – 2014-09-19 23:52:21

+0

first_issue和last_issue是雜誌的刊號。所以,當我訂閱時,我可以訂閱問題12到16,所以first_issue將是12,expiry_issue 16 – Skiltz 2014-09-19 23:52:38

回答

1

如果你沒有在issues表中可用的所有問題的數字,你可以這樣生成它們:

WITH Issues AS (
    SELECT 1 as Number 
    UNION ALL 
    SELECT Number + 1 as Number 
    FROM Issues WHERE Number + 1 <= (SELECT MAX(Expiry_Issue) FROM Subscriber) 
) 
SELECT issue.Number, COUNT(DISTINCT s.id) 
FROM 
    Subscriber s INNER JOIN 
    Issues i ON i.Number BETWEEN s.First_Issue AND s.Expiry_Issue 
+2

+1 - 我只是寫同樣的 - http://sqlfiddle.com/#!3/2dc83/6! – sgeddes 2014-09-20 00:20:28