2014-03-04 60 views
0

我嘗試使用下面的SQL結合從表2分的結果:左移計數加盟同桌的2

select * (
    SELECT Datepart(mm,starttime) as Month, COUNT(*) TotalCountSub 
    from data 
    where usertype='subscriber' 
    group by Datepart(mm,starttime) 
    having count(*) > 1 
) a 
LEFT JOIN (
    SELECT Datepart(mm,starttime) as Month, COUNT(*) TotalCountCust 
    from data 
    where usertype='Customer' 
    group by Datepart(mm,starttime) 
    having count(*) > 1 
) b on a.Month = b.Month 
order by Datepart(mm,starttime) ASC 

什麼,我想在這裏實現的是兩個結果合併成1個表:

表1

Month|TotalCountSub 
1 |50 
2 |123 
3 |14 
4 |91 

表2

Month|TotalCountCust 
1 |80 
2 |465 
3 |79 
4 |84 

結果應該是:

Month|TotalCountSub|TotalCountCust 
1 |50   |80 
2 |123   |465 
3 |14   |79 
4 |91   |84 
+0

您可以發佈從'data'錶行的樣本集?我懷疑這比你的兩個子查詢顯得更簡單。 –

+0

我想我自己就解決了。 SELECT 日期部分(毫米,開始時間), COUNT(CASE WHEN用戶類型= '訂戶' THEN 1 END)count_type_1, COUNT(CASE WHEN用戶類型= '客戶' THEN 1 END)count_type_2, FROM 數據 GROUP BY Datepart(mm,starttime) – user3377282

+0

是的,這可能是最簡單的方法。您可以在下面發佈您自己的答案。 –

回答

0

希望這個作品:

select a.Month, a.TotalCountSub, b.TotalCountCust from (
    SELECT Datepart(mm,starttime) as Month, COUNT(*) TotalCountSub 
    from data 
    where usertype='subscriber' 
    group by Datepart(mm,starttime) 
    having count(*) > 1 
) a 
INNER JOIN (
    SELECT Datepart(mm,starttime) as Month, COUNT(*) TotalCountCust 
    from data 
    where usertype='Customer' 
    group by Datepart(mm,starttime) 
    having count(*) > 1 
) b 
ON a.Month = b.Month 
order by a.Month ASC