行列转化的,别复制。
bianhao pinpai dijige mianji
1111 萝卜 1 22.2
1111 萝卜 2 23.6
1111 白菜 1 12.3
1111 黄瓜 1 1.2
1111 黄瓜 2 1.6
1111 黄瓜 3 1.5
2222 玉米 1 12
2222 萝卜 1 23
转化成
bianhao 第一个萝卜 第二个萝卜 第一个白菜 第一个黄瓜 第二个黄瓜 第三个黄瓜 第一个玉米
1111 22.2 23.6 12.3 1.2 1.6 1.5
2222 23 12
那种举例学习成绩的我已经知道用了, 现在不知道要这样实现怎么弄。
[解决办法]
if OBJECT_ID('tempdb..#temp', 'u') is not null drop table #temp;
go
create table #temp( [bianhao] varchar(100), [pinpai] varchar(100), [dijige] int, [mianji] float);
insert #temp
select '1111','萝卜','1','22.2' union all
select '1111','萝卜','2','23.6' union all
select '1111','白菜','1','12.3' union all
select '1111','黄瓜','1','1.2' union all
select '1111','黄瓜','2','1.6' union all
select '1111','黄瓜','3','1.5' union all
select '2222','玉米','1','12' union all
select '2222','萝卜','1','23'
--SQL:
DECLARE @sql NVARCHAR(MAX), @colList NVARCHAR(MAX)
SET @colList = STUFF(
(
SELECT ','+QUOTENAME('第'+LTRIM(dijige)+'个'+pinpai)
FROM (SELECT rowid=ROW_NUMBER() OVER(ORDER BY GETDATE()) ,* FROM #temp) t
GROUP BY ','+QUOTENAME('第'+LTRIM(dijige)+'个'+pinpai)
ORDER BY MIN(rowid)
FOR XML PATH('')
),1,1,'')
SET @sql = N'
select * from
(select bianhao, pingpai=''第''+LTRIM(dijige)+''个''+pinpai, mianji from #temp) a
pivot
(max(mianji) for pingpai in('+ @colList +')) b
'
PRINT @sql
EXEC(@sql)
/*
bianhao第1个萝卜第2个萝卜第1个白菜第1个黄瓜第2个黄瓜第3个黄瓜第1个玉米
111122.223.612.31.21.61.5NULL
222223NULLNULLNULLNULLNULL12
*/