आप इसे PIVOT
. के साथ निष्पादित कर सकते हैं समारोह। यदि आप उन मानों को जानते हैं जिन्हें आप कॉलम में बदलना चाहते हैं, तो आप एक स्थिर पिवट का उपयोग करके हार्ड कोड कर सकते हैं:
select *
from
(
select dept, emp_id, emp_name, p_date, hours_worked
from table1
) x
pivot
(
max(hours_worked)
for p_date in ([2012-10-19], [2012-10-20], [2012-10-21])
) p
देखें SQL Fiddle with Demo
यदि आपके पास अज्ञात संख्या में मान हैं, तो आप गतिशील sql का उपयोग PIVOT
. के लिए कर सकते हैं डेटा:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ','
+ QUOTENAME(convert(char(10), p_date, 120))
from table1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT dept, emp_id, emp_name,' + @cols + ' from
(
select dept, emp_id, emp_name, p_date, hours_worked
from table1
) x
pivot
(
max(hours_worked)
for p_date in (' + @cols + ')
) p '
execute(@query)
देखें SQL Fiddle with Demo