2013-03-21 25 views
0

和領域是低於SQL查詢來計算各個領域我有查詢表的表

sno  confname   region  enquiry status update closed  approval 
1  Conf 2020  Madhya Pradesh  test   test  closed  reconsider 
2  Conf 2013  Maharashtra  test 123  abcde    reconsider 
3  Conf 2013  Maharashtra  test12   test  closed  approved 
4  Conf 2013  Maharashtra  test124  test1  closed  approved 
5  Conf 3  Karnataka   test124  test1     
6  Conf 3  Karnataka   test876  test45  
7  Conf 3  Karnataka   test365  test45  closed  approved 

,我需要輸出作爲

Region   Conf Name Total No of Enq No of Enq Closed No of Enq Approved 
Maharashtra  Conf 2013    3    2      2 
Karnataka  Conf 3     3    1      1 
Madhya Pradesh Conf 2020    1    1 

和我的SQL查詢

SELECT confname, 
     region, 
     clsed , 
     apprstatus , 
     Count(region) AS totenq, 
     Count(clsed) AS totenqclsd , 
     COUNT(apprstatus) AS totenqapproved 
FROM [enquiries_dtls] 
GROUP BY region, 
     confname, 
     clsed, 
     apprstatus 
+0

使用串連輸出以字符串。 – 2013-03-21 10:37:00

回答

0

您可以使用帶有CASE表達式的聚合函數來獲得結果:

select region, 
    confname, 
    count(*) TotalEnquiry, 
    sum(case when closed is not null then 1 else 0 end) TotalClosed, 
    sum(case when approval = 'approved' then 1 else 0 end) TotalApproved 
from enquiries_dtls 
group by region, confname 

SQL Fiddle with Demo

編輯,如果你需要計算基於這些列的另一個值,則使用子查詢:

select region, 
    confname, 
    TotalEnquiry, 
    TotalClosed, 
    TotalApproved, 
    TotalEnquiry - TotalApproved 
from 
(
    select region, 
    confname, 
    count(*) TotalEnquiry, 
    sum(case when closed is not null then 1 else 0 end) TotalClosed, 
    sum(case when approval = 'approved' then 1 else 0 end) TotalApproved 
    from enquiries_dtls 
    group by region, confname 
) src 

SQL Fiddle with Demo

+0

非常感謝你..它的工作很棒... – Affan 2013-03-21 11:00:32

+0

在這個我需要找到待查詢的數量。這必須來自TotalEnquiry的差異TotalApproved – Affan 2013-03-22 04:12:15

+0

@Affan如果您有問題,請發佈新問題。 :) – Taryn 2013-03-22 09:50:25