pivot - Pivoting in SQL Server 2008 -
this sql script pivoting
declare @canvassquery nvarchar(max) declare @suppliername nvarchar(max) select @suppliername= isnull(@suppliername + ',','') + quotename(suppliername) (select distinct suppliername dpiitemcs_detailed) supplier set @canvassquery = n'select itemdescription, ' + @suppliername + ' dpiitemcs_detailed pivot(sum(unitcost) suppliername in (' + @suppliername + ')) canvasstable' exec sp_executesql @canvassquery the output is
+-------------+-----------+------------+-----------+ | description | supplier1 | supplier2 | supplier3 | +-------------+-----------+------------+-----------+ | item 1 | 28.25 | null | null | | item 1 | null | 28.50 | null | | item 1 | null | null | 28.75 | +-------------+-----------+------------+-----------+ i want output be
+-------------+-----------+-----------+-----------+ | description | supplier1 | supplier2 | supplier3 | +-------------+-----------+-----------+-----------+ | item 1 | 28.25 | 28.50 | 28.75 | +-------------+-----------+-----------+-----------+ what correct sql statement pivoting output?
without seeing table structure, i'm guessing have column in dpiitemcs_detailed unique (maybe id column) being used when grouping pivot. in order fix this, want use subquery in pivot code. code should be:
declare @canvassquery nvarchar(max) declare @suppliername nvarchar(max) select @suppliername= isnull(@suppliername + ',','') + quotename(suppliername) (select distinct suppliername dpiitemcs_detailed) supplier set @canvassquery = n'select itemdescription, ' + @suppliername + ' ( select itemdescription, unitcost, suppliername dpiitemcs_detailed ) d pivot(sum(unitcost) suppliername in (' + @suppliername + ')) canvasstable' exec sp_executesql @canvassquery when using pivot, want include columns needed final select list , pivot aggregation in dataset - including other columns potentially skew result.
Comments
Post a Comment