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