Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

रोलअप फ़ंक्शन - NULL को बदलें

ROLLUP एक null डालता है कुल पंक्ति में इसलिए यदि आप इसे बदलना चाहते हैं तो मैं सुझाव दूंगा कि आप अपनी मौजूदा क्वेरी लें और इसे एक सबक्वायरी में रखें और फिर CASE का उपयोग करें। NAME . पर null . को बदलने के लिए से Total

आपका कोड इस तरह होगा:

select 
  case when name is null then 'Total' else name end Name,
  sum(Activated) Activated,
  sum(Deactivated) Deactivated
from
(
  select 
    case 
      when (upper(m.email) like '%max.com') then 'MAX'
      when (upper(m.email) like '%tax.com') then 'TAX'
      else 'OTHER'
    end Name, 
  SUM(case when substring(convert(varchar(8),n.created_on,112),1,6) = '201209' then 1 else 0         end) 'Activated',
  SUM(case when substring(convert(varchar(8),m.LastLockoutDate,112),1,6)='201209' then 1 else 0              end) 'Deactivated'
  from membership.user_details d
  inner join membership.aspnet_membership m 
    on m.userid = d.userid
  inner join membership.user_notes n 
    on n.userid = d.userid
    and n.CREATED_ON = (select min(created_on) 
                        from membership.user_notes 
                        where userid = n.userid
                          and note = 'received.')  
  where approved = 1
  group by case when (upper(m.email) like '%max.com') then 'MAX'
        when (upper(m.email) like '%tax.com') then 'TAX'
        else 'OTHER' end     
) src
group by name with rollup

यदि आप अपनी क्वेरी को सबक्वायरी में नहीं लपेटते हैं, तो आप कुछ इस तरह का उपयोग कर सकते हैं:

select
   case when 
     (case 
        when (upper(email) like '%max.com') then 'MAX'
        when (upper(email) like '%tax.com') then 'TAX'
        else 'OTHER'
      end) is null then 'Total'
      else case 
        when (upper(email) like '%max.com') then 'MAX'
        when (upper(email) like '%tax.com') then 'TAX'
        else 'OTHER'
      end end Name,
  SUM(case when substring(convert(varchar(8),n.created_on,112),1,6) = '201209' then 1 else 0 end) 'Activated',
  SUM(case when substring(convert(varchar(8),m.LastLockoutDate,112),1,6)='201209' then 1 else 0 end) 'Deactivated'
from membership.user_details d
inner join membership.aspnet_membership m 
  on m.userid = d.userid
inner join membership.user_notes n 
  on n.userid = d.userid
  and n.CREATED_ON = (select min(created_on) 
                     from membership.user_notes 
                     where userid = n.userid
                       and note = 'received.')  
where approved = 1
group by case when (upper(m.email) like '%max.com') then 'MAX'
        when (upper(m.email) like '%tax.com') then 'TAX'
        else 'OTHER' end with rollup


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर से सटीक संपादित डेटा प्राप्त करना

  2. SQL सर्वर (T-SQL उदाहरण) में 'datetime2' को 'smalldatetime' में बदलें

  3. डेटा के बिना किसी क्वेरी से कॉलम नाम प्राप्त करें

  4. क्या ये दो प्रश्न समान हैं - GROUP BY बनाम DISTINCT?

  5. SQL सर्वर प्रबंधक स्टूडियो (SSMS) कैसे स्थापित करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 1