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

SQL पूरी तालिका को स्थानांतरित करता है

अपने इच्छित परिणाम में डेटा स्थानांतरित करने के लिए, आपको UNPIVOT दोनों का उपयोग करना होगा और PIVOT कार्य।

UNPIVOT फ़ंक्शन A लेता है और B कॉलम और परिणामों को पंक्तियों में परिवर्तित करता है। तब आप PIVOT . का उपयोग करेंगे day को बदलने का कार्य करता है कॉलम में मान:

select *
from
(
  select day, col, value
  from yourtable
  unpivot
  (
    value
    for col in (A, B)
  ) unpiv
) src
pivot
(
  max(value)
  for day in (Mon, Tue, Wed, Thu, Fri)
) piv

डेमो के साथ SQL Fiddle देखें।

यदि आप SQL Server 2008+ का उपयोग कर रहे हैं, तो आप CROSS APPLY . का उपयोग कर सकते हैं VALUES . के साथ डेटा को अनपिवट करने के लिए। आपका कोड निम्न में बदल जाएगा:

select *
from
(
  select day, col, value
  from yourtable
  cross apply
  (
    values ('A', A),('B', B)
  ) c (col, value)
) src
pivot
(
  max(value)
  for day in (Mon, Tue, Wed, Thu, Fri)
) piv

डेमो के साथ SQL Fiddle देखें।

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

select *
from
(
  select LEFT(datename(dw,datetime),3) as DateWeek,
    col, 
    value
  from DataTable 
  cross apply 
  (
    values ('A', ACalls), ('B', BCalls)
  ) c (col, value)
) src
pivot
(
  sum(value)
  for dateweek in (Mon, Tue, Wed, Thu, Fri)
) piv



  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 सर्वर / TSQL ट्यूटोरियल भाग 84

  2. SQL सर्वर संग्रहीत कार्यविधि स्रोत को प्रोग्रामेटिक रूप से पुनर्प्राप्त करें जो SQL सर्वर प्रबंधन स्टूडियो gui द्वारा लौटाए गए स्रोत के समान है?

  3. एसक्यूएल सर्वर मॉनिटरिंग के साथ अलर्ट ओवरलोड को रोकने में मदद करने के 4 तरीके

  4. डेटाबेस मेल खाता अपडेट करें (SSMS)

  5. MS SQL सर्वर में डेटाबेस मेल सूचनाओं को कॉन्फ़िगर करना