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

SQL सर्वर 2008 में एकाधिक कॉलम में COUNT(DISTINCT)

आप cross apply . का उपयोग कर सकते हैं और values

select T1.AssetId,
       count(distinct T2.ID) TotalIds,
       sum(case T2.InStock when 0 then 0 else 1 end) AvailableIds 
from YourTable as T1
  cross apply(values(T1.MyId, T1.InStock),
                    (T1.TheirId, 0)
             ) as T2(ID, InStock)
group by T1.AssetId  

SE-Data

या आप एक union all कर सकते हैं एक उप क्वेरी में।

select T.AssetId,
       count(distinct T.ID) TotalIds,
       sum(case T.InStock when 0 then 0 else 1 end) AvailableIds 
from (
     select AssetId, MyId as ID, InStock
     from YourTable
     union all
     select AssetID, TheirId, 0
     from YourTable
     ) as T
group by T.AssetId  


  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. सी # में संग्रहित प्रक्रिया से वापसी मूल्य प्राप्त करना

  3. SQL सर्वर - sys.functions कहाँ है?

  4. तालिका से उपस्थित और अनुपस्थित दिनों की गणना करें

  5. SQL सर्वर में किसी भी / कुछ लॉजिकल ऑपरेटर का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 127