使用t-sql进行数据透视[封闭]
发布时间:2020-12-12 08:48:19 所属栏目:MsSql教程 来源:网络整理
导读:在SSIS中,有一个名为Pivot转换的任务将列更改为行, 但是如何使用t-sql在sql server中执行相同的任务? 这是我的样品表 location product qty-----------------------delhi PEPSI 100GURGAON CAKE 200NOIDA APPLE 150delhi cake 250 所以在转换ON位置作为setke
在SSIS中,有一个名为Pivot转换的任务将列更改为行, 但是如何使用t-sql在sql server中执行相同的任务? 这是我的样品表 location product qty ----------------------- delhi PEPSI 100 GURGAON CAKE 200 NOIDA APPLE 150 delhi cake 250 所以在转换ON位置作为setkey和产品作为枢轴键使用ssis工具o / p成为 location pepsi cake apple delhi 100 null null GURGAON null 200 null NOIDA null null 150 delhi null 250 null 解决方法使用PIVOT 表操作符,如下所示:
SELECT * FROM tablename PIVOT ( MAX(qty) FOR product IN([pepsi],[cake],[apple]) ) as p; > SQL Fiddle Demo 注意: >如果要使用总和使用SUM或任何其他聚合函数,我用了qty的MAX聚合函数. 喜欢这个: DECLARE @cols AS NVARCHAR(MAX); DECLARE @query AS NVARCHAR(MAX); select @cols = STUFF((SELECT distinct ',' + QUOTENAME(product) FROM tablename FOR XML PATH(''),TYPE ).value('.','NVARCHAR(MAX)'),1,''); SELECT @query = 'SELECT * FROM tablename PIVOT ( MAX(qty) FOR product IN(' + @cols + ')) AS p;'; execute(@query); > Updated SQL Fiddle Demo (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |