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

UNPIVOT का उपयोग करके स्तंभों को पंक्तियों में स्थानांतरित करना

आप आसानी से YP को विभाजित कर सकते हैं LEFT() . का उपयोग करके स्ट्रिंग , RIGHT() , SUBSTRING() , आदि। मेरा सुझाव होगा कि आप अपने UNPIVOT . को कैसे संभाल रहे हैं . ऐसा लगता है कि आपके पास UNPIVOT . के लिए बहुत सारे कॉलम हैं इसलिए मेरा सुझाव हो सकता है कि इस क्वेरी को करने के लिए डायनेमिक SQL को लागू किया जाए। आप इसे इस तरह से करेंगे:

declare @colsUnpivot varchar(max),
  @query  AS NVARCHAR(MAX),
  @cols  varchar(max)

select @colsUnpivot = stuff((select ','
                             +quotename(replace(C.name, 'Qty', ''))
         from sys.columns as C
         where C.object_id = object_id('yourtable') and
               C.name like 'Qty%'
         for xml path('')), 1, 1, '')

select @cols = stuff((select ','
                      +quotename(C.name) + ' as ' + replace(C.name, 'Qty', '')
         from sys.columns as C
         where C.object_id = object_id('yourtable') and
               C.name like 'Qty%'
         for xml path('')), 1, 1, '')

set @query 
  = 'select rowid, 
          left(YP, 1) YP,
          cast(right(YP, len(YP) - 1) as int) period,
          Val
     from
     (
        select rowid, ' + @cols + '
        from yourtable
     ) x1
     unpivot
     (
        val for YP IN (' + @colsUnpivot + ')
     ) u'

exec(@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. SQL सर्वर (T-SQL उदाहरण) में 'डेटाटाइम' को 'डेटाटाइमऑफ़सेट' में बदलें

  3. SQL सर्वर 2005 का उपयोग कर सर्वश्रेष्ठ पेजिंग समाधान?

  4. Row_number . का उपयोग करके किसी क्वेरी से @@ rowcount प्राप्त करने का कुशल तरीका

  5. अद्यतन पंक्ति प्राप्त करें