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

ubah satu baris menjadi kolom

Lihat tabel pivot;

Lihat http://msdn.microsoft.com/en-us/library/ ms177410.aspx

Permintaan sederhana untuk jumlah StatusTypeNames yang terbatas akan menjadi seperti;

SELECT * FROM 
(SELECT MonthName, StatusTypeName as attributeCol, StatusCount FROM @ResultsTable) rt 
PIVOT ( MAX(StatusCount) FOR attributeCol in ([ToBeScheduled],[Complete])) as pvt
ORDER BY MonthName

Perhatikan penggunaan MAX. Jika ada kemungkinan Anda akan memiliki beberapa baris dengan kombinasi nama bulan dan nama tipe status yang sama, maka Anda mungkin ingin menggunakan SUM.

Untuk menggunakan kolom dinamis seperti yang disarankan madhivinan, Anda dapat mengikuti contoh ini. Gulir ke bawah.

Saya mencoba membuatnya bekerja dengan contoh Anda, tetapi karena saya memiliki beberapa masalah mungkin karena saya tidak memiliki tabel. Namun, sesuatu seperti berikut ini adalah apa yang Anda cari.

DECLARE @listCol VARCHAR(2000)
DECLARE @query VARCHAR(4000)
SELECT  @listCol = SELECT STUFF (( SELECT DISTINCT '],[' + 
                    StatusTypeName FROM @ResultsTable ORDER BY '],[' + 
                    StatusTypeName FOR XML PATH ('')), 1, 2, '') + ']'


SET @query =
'SELECT * FROM
      (SELECT MonthNameCol, StatusTypeName as attributeCol, StatusCount FROM @ResultsTable) rt
PIVOT ( MAX(StatusCount) FOR attributeCol in ('[email protected]+')) AS pvt ORDER BY MonthNameCol'

EXECUTE (@query)

Ini tidak sepenuhnya benar, tetapi ini adalah titik awal.

Semoga berhasil.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Panggilan asinkron dari prosedur tersimpan SQL Server di C#

  2. Cara yang lebih baik untuk memeriksa apakah data sudah ada dan masukkan

  3. Hitung catatan untuk setiap bulan dalam setahun

  4. Berfungsi seperti USE untuk menunjuk ke database SQL di server yang berbeda?

  5. INSERT INTO dengan exec dengan beberapa set hasil