तो, यहां क्या होता है कि जब परिणाम प्रदर्शित होते हैं, तो यह कॉलम नाम को संयोजित नहीं करता है, बल्कि इसे छोटा कर देता है। यह अभी भी कई पंक्तियों को दिखाता है।

select distinct 
    
    CASE WHEN ARPDisplayName0  like 'Crystal Reports 2008%' THEN 'Crystal Reports 2008'
    WHEN ARPDisplayName0  like 'Crystal Reports 2011%'   THEN 'Crystal Reports 2011'
    ELSE ARPDisplayName0  END ARPDisplayName0,
    count(ARPDisplayName0) as Software_Count

from v_gs_INSTALLED_SOFTWARE

where
ARPDisplayName0  like '%Crystal Reports%'

group by ARPdisplayname0
order by ARPDisplayName0 

परिणाम एक प्रविष्टि होना चाहिए: "क्रिस्टल रिपोर्ट 2008"

एकाधिक नहीं: "क्रिस्टल रिपोर्ट 2008" "क्रिस्टल रिपोर्ट 2008" "क्रिस्टल रिपोर्ट 2008" "क्रिस्टल रिपोर्ट 2008" "क्रिस्टल रिपोर्ट 2008"

अपडेट करें: तो, फिक्स एक सबक्वेरी था

select ARPDisplayName0, count(*) as Total
from
(
select 
    
    CASE WHEN ARPDisplayName0  like 'Crystal Reports 2008%' THEN 'Crystal Reports 2008'
    WHEN ARPDisplayName0  like 'Crystal Reports 2011%'   THEN 'Crystal Reports 2011'
    ELSE ARPDisplayName0  END ARPDisplayName0,
    count(ARPDisplayName0) as Software_Count

from v_gs_INSTALLED_SOFTWARE

where
ARPDisplayName0  like '%Crystal Reports%'

)t

group by ARPDisplayName0
order by ARPDisplayName0
0
My9to5 24 जून 2021, 20:56
1
क्या आप यहां बता सकते हैं कि आपको क्या मिलता है और अधिक स्पष्टीकरण के लिए आप क्या उम्मीद करते हैं?
 – 
Salahuddin Ahmed
24 जून 2021, 21:04
ज़रूर। मैंने इसे ऊपर जोड़ा है
 – 
My9to5
24 जून 2021, 21:31
1
अपने केस स्टेटमेंट को मौजूदा कॉलम नाम के अलावा किसी अन्य चीज़ के रूप में अलियास करने का प्रयास करें और देखें कि इससे क्या मिलता है।
 – 
Isaac
24 जून 2021, 21:59
क्या इससे आपके सवाल का जवाब मिलता है? सीटीई का उपयोग किए बिना परिणाम सेट में समूह द्वारा कॉलम प्राप्त करें a> आप एक CROSS APPLY (VALUES डाल सकते हैं जिससे आप इसे क्वेरी में कहीं भी संदर्भित कर सकते हैं
 – 
Charlieface
24 जून 2021, 22:35

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा लगता है कि मुझे हर दिन कुछ न कुछ सीखना है। फिक्स एक सबक्वायरी थी (मेरी चाय नहीं)

select ARPDisplayName0, count(*) as Total
from
(
select 
    
    CASE WHEN ARPDisplayName0  like 'Crystal Reports 2008%' THEN 'Crystal Reports 2008'
    WHEN ARPDisplayName0  like 'Crystal Reports 2011%'   THEN 'Crystal Reports 2011'
    ELSE ARPDisplayName0  END ARPDisplayName0,
    count(ARPDisplayName0) as Software_Count

from v_gs_INSTALLED_SOFTWARE

where
ARPDisplayName0  like '%Crystal Reports%'

)t

group by ARPDisplayName0
order by ARPDisplayName0

1
My9to5 24 जून 2021, 22:04
हाँ, अच्छा काम। इसका कारण यह है कि आपका CASE विवरण GROUP BY द्वारा लौटाए गए परिणाम सेट के आउटपुट पर लागू होता है। जब आप सबक्वेरी में अपना स्ट्रिंग रिप्लेसमेंट करते हैं और फिर ग्रुप बाय को सबक्वेरी आउटपुट पर लागू करते हैं, तो आपको वांछित परिणाम मिलता है।
 – 
Robert Calhoun
24 जून 2021, 22:15
उपश्रेणी में group by ARPDisplayName0 जोड़ने की आवश्यकता हो सकती है अन्यथा यह त्रुटि को फेंकने का अनुमान है;)
 – 
Salahuddin Ahmed
24 जून 2021, 22:21
यह आपको दिलचस्प परिणाम देने जा रहा है: सबसे पहले, आपके पास आंतरिक क्वेरी में count बिना group by के नहीं हो सकता है, और यदि आप इसे जोड़ते हैं तो बाहरी गणना केवल समूहों की संख्या की गणना करेगी। आपको पहले ARPDisplayName0 को बिना किसी समुच्चय के परिभाषित करना होगा, फिर उस मान और गिनती के आधार पर समूह बनाना होगा। साथ ही count(ARPDisplayName0) count(*) या count(1) के समान है यदि ARPDisplayName0 अशक्त नहीं है
 – 
Charlieface
24 जून 2021, 22:40
समस्या सभी समूह में है - चूंकि आप अभिव्यक्ति द्वारा समूह के बजाय कॉलम द्वारा समूहित करते हैं। आप केस एक्सप्रेशन को समूह में कॉपी कर सकते हैं और इससे समस्या ठीक हो जाएगी। और... GROUP BY के साथ DISTINCT की कोई आवश्यकता नहीं है - यह बेमानी है।
 – 
Jeff
25 जून 2021, 01:15