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

Judul Kolom yang Dihasilkan Secara Dinamis dalam kueri sql

Saya melihat masalah pivot dinamis ini di waktu yang berbeda. Dan saya harus melakukannya. Setelah banyak mencari, saya menemukan solusi yang sangat cocok untuk saya. itu tidak begitu elegan tapi itu menyelamatkan saya. Apa yang saya lakukan adalah pertama-tama menyiapkan data dalam tabel sementara, setelah itu saya secara dinamis membuat string pivot (dalam kasus Anda itu DD-MM) menugaskannya ke variabel. Dan pada akhirnya saya membuat string sql untuk dieksekusi sebagai sql dinamis .

Saya menggunakan data sampel Anda dan sepertinya berhasil. Semoga membantu

select 
    userid,
         browsername, 
         CAST(day(logintime) as nvarchar(2)) + '-' + CAST(Month(logintime) AS nVARCHAR(2))  AS period  
INTO #TMP
from user_log_table order by 1

DECLARE @cols AS NVARCHAR(MAX), @query  AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' 
                    + QUOTENAME(convert(varchar(10), period, 120)) 
                from #TMP order by 1
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'')

set @query = 'SELECT userid, browsername,' + @cols + ' from 
         (
            select userid, browsername, period
            from #TMP
        ) x
        pivot 
        (
            count(period)
            for period in (' + @cols + ')
        ) p '
exec(@query)
drop table #TMP


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pernyataan CASE dalam klausa WHERE di SQL Server 2008

  2. Bagaimana Fungsi SQL Server SOUNDEX() Bekerja

  3. Meratakan rentang waktu yang berpotongan

  4. Apa itu Koneksi Tepercaya?

  5. Baca konfigurasi .NET dari database