使用t-sql进行数据透视[封闭]
发布时间:2020-05-27 19:44:30 所属栏目:MsSql 来源:互联网
导读:在SSIS中,有一个名为Pivot转换的任务将列更改为行, 但是如何使用t-sql在sql server中执行相同的任务? 这是我的样品表 location product qty-----------------------delhi PEPSI 100GURGAON CAKE 200NOIDA APPLE 150delhi cake 2
|
在SSIS中,有一个名为Pivot转换的任务将列更改为行, 这是我的样品表 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 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
