Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Transposisi kolom ke baris menggunakan UNPIVOT

Anda dapat dengan mudah membagi YP string menggunakan LEFT() , RIGHT() , SUBSTRING() , dll. Saran saya adalah bagaimana Anda menangani UNPIVOT . Anda . Sepertinya Anda memiliki banyak kolom untuk UNPIVOT jadi saran saya mungkin menerapkan SQL dinamis untuk melakukan kueri ini. Anda akan melakukannya dengan cara ini:

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)

lihat SQL Fiddle dengan 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. Cara Memperbaiki "Fungsi partisi terkait menghasilkan lebih banyak partisi daripada grup file yang disebutkan dalam skema" Msg 7707 di SQL Server

  2. Entity Framework - Mendapatkan panjang data dalam kolom teks

  3. Apa alat terbaik untuk membandingkan dua database SQL Server (skema dan data)?

  4. Bagaimana Saya Menyisipkan Byte[] Ke dalam Kolom VARBINARY SQL Server

  5. Kesalahan sintaksis di dekat 'dari' dalam kondisi pencarian teks lengkap 'kontrol'