有这样一个需求,100多个商品,1万多家店,原表:一个商品一家店一条记录。
要求返回以店为行,商品为列的结果集。
(由于商品个数是不能确定,今天有100个商品,明天可能有150个商品,不能建立固定的表,只做结果集查看。)
在SQLSERVER2005及以后的版本中,用存储过程还是很好实现的,有 for xml path 和 PIVOT两个函数,正好能秒杀之。
构建原始表如下:
ProductKey为商品,CustomerKey代表商店,另外有时间和另一个计算列。
1. 首先用distinct取出所有的商品,以行显示,这是之后要作为列的。用到了for xml path
declare @allprodu