Nếu bạn có biết hoặc số lượng tối đa các cột mong muốn, bạn có thể thực hiện một PIVOT đơn giản, nếu không, bạn cần phải chuyển sang DYNAMIC
Ví dụ
Select *
From (
Select [Code]
,[Data]
,[Col] = concat('Data',Row_Number() over (Partition By [Code] Order by 1/0))
From YourTable
) src
Pivot (max([Data]) for [Col] in ([Data1],[Data2],[Data3],[Data4],[Data5])) pvt
Trả lại
Code Data1 Data2 Data3 Data4 Data5
SL Payroll 22 33 43 NULL NULL