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

MSSQL 2008 R2 में समग्र कार्य के बिना धुरी

परिणाम प्राप्त करने के लिए आप PIVOT फ़ंक्शन का उपयोग कर सकते हैं, आपको बस row_number() का उपयोग करना होगा की मदद।

इसके लिए मूल प्रश्न होगा:

select skill_id, skill, parameter,
  row_number() over(partition by skill, skill_id order by skill_id) rn
from yt;

देखें SQL Fiddle with Demo . मैं row_number() . का उपयोग करता हूं skill . के भीतर प्रत्येक पंक्ति में एक अलग मान लागू करने के लिए और skill_id , तो आप इस पंक्ति संख्या मान को स्तंभ के रूप में PIVOT के रूप में उपयोग करेंगे।

PIVOT लागू होने वाला पूरा कोड होगा:

select skill_id, skill,[Parameter_1], [Parameter_2], [Parameter_3]
from 
(
  select skill_id, skill, parameter,
    'Parameter_'+cast(row_number() over(partition by skill, skill_id 
                                     order by skill_id) as varchar(10)) rn
  from yt
) d
pivot
(
  max(parameter)
  for rn in ([Parameter_1], [Parameter_2], [Parameter_3])
) piv;

देखें SQL Fiddle with Demo .

आपके मामले में, ऐसा लगता है कि आपके पास प्रत्येक कौशल के लिए अज्ञात संख्या में पैरामीटर होंगे। यदि यह सत्य है, तो आप परिणाम प्राप्त करने के लिए गतिशील SQL का उपयोग करना चाहेंगे:

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

select @cols = STUFF((SELECT distinct ',' + QUOTENAME('Parameter_'
                          +cast(row_number() over(partition by skill, skill_id 
                               order by skill_id) as varchar(10))) 
                    from yt
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT skill_id, skill,' + @cols + ' from 
             (
                select skill_id, skill, parameter,
                  ''Parameter_''+cast(row_number() over(partition by skill, skill_id 
                                   order by skill_id) as varchar(10)) rn
                from yt
            ) x
            pivot 
            (
                max(parameter)
                for rn in (' + @cols + ')
            ) p '

execute(@query);

देखें SQL Fiddle with Demo




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वर्कर को फ्लोट में बदलने में त्रुटि

  2. दो तिथियों के बीच सभी तिथियों को कैसे सूचीबद्ध करें

  3. SQL सर्वर में हटाए गए डेटाबेस को ट्रैक करने के तरीके

  4. नोडजेएस एमएसएसक्यूएल जहां तैयार एसक्यूएल स्टेटमेंट में

  5. सिंगल एसक्यूएल डिलीट स्टेटमेंट डेडलॉक का कारण क्यों बनेगा?