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

SQL सर्वर:कॉलम से पंक्तियों तक

कॉलम को पंक्तियों में बदलने के लिए आप UNPIVOT फ़ंक्शन का उपयोग कर सकते हैं:

select id, entityId,
  indicatorname,
  indicatorvalue
from yourtable
unpivot
(
  indicatorvalue
  for indicatorname in (Indicator1, Indicator2, Indicator3)
) unpiv;

ध्यान दें, आपके द्वारा अनपिवोट किए जा रहे कॉलम के डेटाटाइप समान होने चाहिए ताकि आपको अनपिवट को लागू करने से पहले डेटाटाइप को कन्वर्ट करना पड़े।

आप CROSS APPLY का भी इस्तेमाल कर सकते हैं कॉलम बदलने के लिए UNION ALL के साथ:

select id, entityid,
  indicatorname,
  indicatorvalue
from yourtable
cross apply
(
  select 'Indicator1', Indicator1 union all
  select 'Indicator2', Indicator2 union all
  select 'Indicator3', Indicator3 union all
  select 'Indicator4', Indicator4 
) c (indicatorname, indicatorvalue);

SQL सर्वर के आपके संस्करण के आधार पर आप VALUES क्लॉज के साथ CROSS APPLY का भी उपयोग कर सकते हैं:

select id, entityid,
  indicatorname,
  indicatorvalue
from yourtable
cross apply
(
  values
  ('Indicator1', Indicator1),
  ('Indicator2', Indicator2),
  ('Indicator3', Indicator3),
  ('Indicator4', Indicator4)
) c (indicatorname, indicatorvalue);

अंत में, यदि आपके पास अनपिवट करने के लिए 150 कॉलम हैं और आप पूरी क्वेरी को हार्ड-कोड नहीं करना चाहते हैं, तो आप डायनेमिक SQL का उपयोग करके sql स्टेटमेंट जेनरेट कर सकते हैं:

DECLARE @colsUnpivot AS NVARCHAR(MAX),
   @query  AS NVARCHAR(MAX)

select @colsUnpivot 
  = stuff((select ','+quotename(C.column_name)
           from information_schema.columns as C
           where C.table_name = 'yourtable' and
                 C.column_name like 'Indicator%'
           for xml path('')), 1, 1, '')

set @query 
  = 'select id, entityId,
        indicatorname,
        indicatorvalue
     from yourtable
     unpivot
     (
        indicatorvalue
        for indicatorname in ('+ @colsunpivot +')
     ) u'

exec sp_executesql @query;


  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 - COALESCE और ISNULL के बीच अंतर?

  2. SQL सर्वर में डेटाबेस बनाते समय डेटा फ़ाइलों और लॉग फ़ाइलों का स्थान कैसे निर्दिष्ट करें

  3. OPENJSON के साथ SQL सर्वर में नेस्टेड JSON का चयन कैसे करें?

  4. उपयोगकर्ता सेटिंग्स के लिए डेटाबेस डिज़ाइन

  5. अदिश चर @Id घोषित करना चाहिए?