this dynamic crosstab query in northwind database:
declare @country nvarchar(max) ='', @country2 nvarchar(max) select @country = @country + quotename(country)+', ' customers group country set @country= left(@country, len(@country)-1) set @country2 = replace(@country, ',' , '+') declare @sql nvarchar(max) set @sql = 'select * , '+@country2+' total (select e.employeeid, e.lastname, isnull( od.quantity, 0)* isnull(od.[unitprice],0) qu, o.shipcountry co orders o join employees e on o.employeeid = e.employeeid join [dbo].[order details] od on od.orderid = o.orderid) t pivot(sum(qu) co in ('+@country+')) pvt order 1' exec(@sql)
i need change code in way have null values replaced 0.
declare @country nvarchar(max) = '' , @country2 nvarchar(max); select @country = @country + coalesce(quotename(country) + ', ', '') customers exists ( select * [orders] [o] o.[customerid] = customers.[customerid] ) group country; set @country = left(@country, len(@country) - 1); set @country2 = replace(@country, ',', '+'); declare @sql nvarchar(max); set @sql = 'select * , ' + @country2 + ' total ( select oe.employeeid, oe.lastname, oe.shipcountry co, coalesce(od.quantity * od.unitprice, 0) qu ( select employeeid, lastname, shipcountry ( select distinct shipcountry orders ) o , employees ) oe left join orders o on o.employeeid = oe.employeeid , [oe].[shipcountry] = [o].[shipcountry] left join [order details] od on od.orderid = o.orderid ) t pivot(sum(qu) co in (' + @country + ')) pvt order 1'; exec(@sql);
Comments
Post a Comment