SQLSERVER 列转置的存储过程

本文介绍了如何在SQLSERVER 2005及以上版本中使用存储过程结合for xml path和PIVOT函数,将商品与店铺数据从行转为列,以满足动态列需求。同时探讨了Oracle中类似功能的wm_concat()和PIVOT用法,并建议在Oracle环境下考虑使用C#连接存储过程的方式。
摘要由CSDN通过智能技术生成

有这样一个需求,100多个商品,1万多家店,原表:一个商品一家店一条记录。

要求返回以店为行,商品为列的结果集。

(由于商品个数是不能确定,今天有100个商品,明天可能有150个商品,不能建立固定的表,只做结果集查看。)

在SQLSERVER2005及以后的版本中,用存储过程还是很好实现的,有 for xml path 和 PIVOT两个函数,正好能秒杀之。

 

构建原始表如下:

ProductKey为商品,CustomerKey代表商店,另外有时间和另一个计算列。

 

1. 首先用distinct取出所有的商品,以行显示,这是之后要作为列的。用到了for xml path

declare @allprodu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值