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

ऐसे कॉलम खोजें जिनमें केवल शून्य हों

declare @T table
(
  Col1 int,
  Col2 int,
  Col3 int,
  Col4 int
)

insert into @T values
(1,   0   , null, null),
(0,   null, 0   , 1)

select U.ColName
from
  (
    select count(nullif(Col1, 0)) as Col1,
           count(nullif(Col2, 0)) as Col2,
           count(nullif(Col3, 0)) as Col3,
           count(nullif(Col4, 0)) as Col4
    from @T
  ) as T
unpivot
  (C for ColName in (Col1, Col2, Col3, Col4)) as U
where U.C = 0

परिणाम:

ColName
----------
Col2
Col3

इसके पीछे विचार गैर null . को गिनना है मान और केवल उन्हीं को रखें जिनकी गिनती 0 . है ।

COUNT केवल गैर-शून्य मानों की गणना करेगा।
NULLIF(ColX, 0) सभी 0 बना देगा null . में .
आंतरिक क्वेरी चार स्तंभों वाली एक पंक्ति लौटाती है। UNPIVOT इसे घुमा देगा ताकि आपके पास दो कॉलम और चार पंक्तियाँ हों।
आखिरकार where U.C = 0 सुनिश्चित करता है कि आपको केवल वे कॉलम मिले जिनमें null . के अलावा कोई मान नहीं है या 0



  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 सर्वर से SQL सर्वर में डेटा का सुरक्षित स्थानांतरण

  2. SQL सर्वर 2008 में पेजिनेशन कैसे करें?

  3. SQL सर्वर डेटाबेस में विदेशी कुंजी बाधा कैसे छोड़ें - SQL सर्वर / TSQL ट्यूटोरियल भाग 75

  4. SQL LIKE क्लॉज में SqlParameter का उपयोग काम नहीं कर रहा है

  5. सी # में थोक अद्यतन