当前位置: 代码迷 >> Sql Server >> 行转列解决思路
  详细解决方案

行转列解决思路

热度:49   发布时间:2016-04-24 09:09:14.0
行转列
有表如下
id 网址大类
1 搜索引擎页
1 列表页
2 各产品地区首页
2 列表页
想做成这样的
id 网址大类1 网址大类2
1 搜索引擎页 列表页
2 各产品地区首页 列表页
怎样用SQL语句实现呢
------解决思路----------------------
DECLARE @SQL NVARCHAR(MAX)
DECLARE @M INT,@I VARCHAR(10)
SET @SQL='SELECT id'
SELECT TOP 1 @M=COUNT(1)FROM TB GROUP BY id ORDER BY COUNT(1)DESC
SET @I=1
WHILE @I<=@M
SELECT @SQL=@SQL+',MAX(CASE WHEN RN='+@I+' THEN 网址大类 END)[网址大类'+@I+']',@I=@I+1
SET @SQL=@SQL+'FROM(SELECT *,ROW_NUMBER()OVER(PARTITION BY id ORDER BY GETDATE())RN FROM TB)T GROUP BY id ORDER BY id'
EXEC(@SQL)
  相关解决方案