एक PIVOT
डेटा को एक कॉलम से कई कॉलम में घुमाने के लिए उपयोग किया जाता है।
आपके उदाहरण के लिए यहां एक स्टेटिक पिवट है जिसका अर्थ है कि आप उन कॉलमों को हार्ड कोड करते हैं जिन्हें आप घुमाना चाहते हैं:
create table temp
(
id int,
teamid int,
userid int,
elementid int,
phaseid int,
effort decimal(10, 5)
)
insert into temp values (1,1,1,3,5,6.74)
insert into temp values (2,1,1,3,6,8.25)
insert into temp values (3,1,1,4,1,2.23)
insert into temp values (4,1,1,4,5,6.8)
insert into temp values (5,1,1,4,6,1.5)
select elementid
, [1] as phaseid1
, [5] as phaseid5
, [6] as phaseid6
from
(
select elementid, phaseid, effort
from temp
) x
pivot
(
max(effort)
for phaseid in([1], [5], [6])
)p
यहाँ एक कार्यशील संस्करण के साथ एक SQL डेमो है।
यह एक गतिशील PIVOT के माध्यम से भी किया जा सकता है जहाँ आप गतिशील रूप से स्तंभों की सूची बनाते हैं और PIVOT करते हैं।
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.phaseid)
FROM temp c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT elementid, ' + @cols + ' from
(
select elementid, phaseid, effort
from temp
) x
pivot
(
max(effort)
for phaseid in (' + @cols + ')
) p '
execute(@query)
दोनों के परिणाम:
ELEMENTID PHASEID1 PHASEID5 PHASEID6
3 Null 6.74 8.25
4 2.23 6.8 1.5