2013-07-31 7 views
19

मेरे पास एक टेबल है और मुझे निम्नलिखित फैशन में आउटपुट प्रस्तुत करने की आवश्यकता है।एक केस स्टेटमेंट में एसक्यूएल गिनती का उपयोग करते हुए

tb_a: 

col1 | reg_id | rsp_ind 

rsp_ind = और के रूप में 'नई' 0 1 के रूप में 'स्वीकृत'

उत्पादन के साथ पंक्तियों की गणना की जानी चाहिए

NEW | Accepted 
9 | 10 

मैं निम्न क्वेरी का उपयोग कर की कोशिश की।

select 
    case when rsp_ind = 0 then count(reg_id)end as 'New', 
    case when rsp_ind = 1 then count(reg_id)end as 'Accepted' 
from tb_a 

और मैं

NEW | Accepted 
NULL| 10 
9 | NULL 

के रूप में उत्पादन हो रही किसी ने मुझे मदद कर सके उत्पादन प्राप्त करने के लिए क्वेरी tweak हूँ। नोट: मैं इसके आस-पास एक योग नहीं जोड़ सकता। एक बड़े कार्यक्रम का इसका हिस्सा और इसलिए मैं इस पर एक सुपर-क्वेरी नहीं जोड़ सकता।

+0

आप एक योग जोड़ नहीं सकते हैं लेकिन क्या आप क्वेरी बदल सकते हैं? या यह एक सबक्वायरी बनाओ? –

+0

मैं केस स्टेटमेंट के बजाय एक सबक्वायरी जोड़ सकता हूं। लेकिन इस पर एक सुपर क्वेरी नहीं है ... एक सबक्वायरी जोड़ना स्पष्ट रूप से प्रदर्शन हिट के साथ आता है ... – Raghav

+2

मैं देखता हूं .. तो हो सकता है कि आप इन सबक्वायरी को इनलाइन सबक्वायरी बनाने के बजाय अपने शामिल खंड में जोड़ सकें .. यह संभव है यू कोड? –

उत्तर

54
SELECT 
    COUNT(CASE WHEN rsp_ind = 0 then 1 ELSE NULL END) as "New", 
    COUNT(CASE WHEN rsp_ind = 1 then 1 ELSE NULL END) as "Accepted" 
from tb_a 

आप इस अनुरोध HERE

+0

यह ओपी के साथ –

+1

@JafarKofahi के लिए पूछताछ के साथ नहीं होगा, खुद को समझाने के लिए स्वतंत्र महसूस करें! ऐसा लगता है कि यह ठीक है कि वह क्या देख रहा है ... ओपी में –

+0

उसने कहा "नोट: मैं इसके आसपास एक योग नहीं जोड़ सकता। इसका" –

4

बंद के लिए उत्पादन देख सकते हैं ... कोशिश:

select 
    Sum(case when rsp_ind = 0 then 1 Else 0 End) as 'New', 
    Sum(case when rsp_ind = 1 then 1 else 0 end) as 'Accepted' 
from tb_a 
+0

ओपी के साथ यह नहीं होगा कि ओपी –

+0

के लिए पूछता है ओपी कहता है कि इससे उसे दो पंक्तियां मिलती हैं। – ErikE

+0

केवल टाइपो - एक बंद कोष्ठक को छोड़ दिया। आश्चर्यचकित यह भी काम किया। –

0
select sum(rsp_ind = 0) as `New`, 
     sum(rsp_ind = 1) as `Accepted` 
from tb_a 
+0

वह एसक्यूएल के सभी प्रकारों में काम नहीं करेगा ... – ErikE

+2

हां - यह हालांकि MySQL पर काम करेगा। –

+3

ओपी को दिए गए एक महत्वपूर्ण विवरण में यह नहीं कहा गया कि डीबीएमएस क्या है। – ErikE

2

कारण आप एक की जगह दो पंक्तियों हो रही है कि आप है बाहरी क्वेरी में rsp_ind द्वारा समूहबद्ध कर रहे हैं (जो आपने नहीं किया, मेरी निराशा के लिए, हमारे साथ साझा करें)। GROUP BY आइटम से निपटने के बिना दो की बजाय एक पंक्ति को मजबूर करने के लिए आप कुछ भी नहीं कर सकते हैं।

संबंधित मुद्दे