SQL Server 2005 how to use pivot instead of a bunch of case statments? -
please show me how can modify sql select use pivot instead of case testaments.
select t.projectid, coalesce(max(executivechampion), 'n/a'), coalesce(max(businessowner), 'n/a'), coalesce(max(businessanalyst), 'n/a'), coalesce(max(generalcontractor), 'n/a'), coalesce(max(primarypm), 'n/a'), coalesce(max(developmentmanager), 'n/a'), coalesce(max(developmentlead), 'n/a'), coalesce(max(tdm), 'n/a'), coalesce(max(ptm), 'n/a') ( select pl.projectid, case when stakeholdercid = 95 fullname else null end 'executivechampion', case when stakeholdercid = 96 fullname else null end 'businessowner', case when stakeholdercid = 97 fullname else null end 'businessanalyst', case when stakeholdercid = 100 fullname else null end 'generalcontractor', case when stakeholdercid = 101 fullname else null end 'primarypm', case when stakeholdercid = 102 fullname else null end 'developmentmanager', case when stakeholdercid = 103 fullname else null end 'developmentlead', case when stakeholdercid = 104 fullname else null end 'tdm', case when stakeholdercid = 105 fullname else null end 'ptm' @plist pl inner join statuscode sc on 1 = 1 , scid in (8, 9) left outer join projectstakeholder ps on pl.projectid = ps.projectid , sc.cid = ps.stakeholdercid ) t group t.projectid
something this:
select projectid, isnull([95],'n/a') executivechampion, isnull([96],'n/a') businessowner, isnull([97],'n/a') businessanalyst, isnull([100],'n/a') generalcontractor, isnull([101],'n/a') primarypm, isnull([102],'n/a') developmentmanager, isnull([103],'n/a') developmentlead, isnull([104],'n/a') tdm, isnull([105],'n/a') ptm ( select pl.projectid, stakeholdercid, fullname @plist pl inner join statuscode sc on 1 = 1 , scid in (8, 9) left join projectstakeholder ps on pl.projectid = ps.projectid , sc.cid = ps.stakeholdercid) st pivot (max(fullname) stakeholdercid in ([95], [96], [97], [100], [101], [102], [103], [104], [105])) pt
Comments
Post a Comment