本文由我司收集整编,推荐下载,如有疑问,请与我司联系
SQL2000
动态行转列
+
横向纵向合计的问题
2014/07/25 10
动态行转列
+
横向纵向合计
createtabletb(
姓名
varchar(10),
课程
varchar(10),
分数
int)
insertintotbvalues(‘
张三
’,’
语文
’,74)
insertintotbvalues(‘
张三
’,’
数
学
’,83)
insertintotbvalues(‘
张三
’,’
物理
’,93)
insertintotbvalues(‘
李四
’,’
语文
’,74)
insertintotbvalues(‘
李四
’,’
数学
’,84)
insertintotbvalues(‘
李四
’,’
物理
’,94)
insertintotbvalues(‘
张三
’,
英语
’,80) go
要得到以下,
姓名语文数学物理英语合计
---
-----------------------------------------------------------
李四
7484940252
张三
74839380330
合计
14816718780582
求教,课程名称不固定,是动态的哦。
。
。
。请赐教
createtabletb(
姓名
varchar(10),
课程
varchar(10),
分数
int)insertintotbvalues(‘
张三
’,’
语
文
’,74)insertintotbvalues(‘
张三
’,’
数学
’,83)insertintotbvalues(‘
张三
’,’
物
理
’,93)insertintotbvalues(‘
李四
’,’
语文
’,74)insertintotbvalues(‘
李四
’,’
数
学
’,84)insertintotbvalues(‘
李四
’,’
物理
’,94)insertintotbvalues(‘
张三
’,’
英
语
’,80)declare@sqlvarchar(500)set@sql=‘select
姓名
’select@sql=@sql+’,max(case
课程
when’’’+
课程
+’’’then
分数
else0end)[‘+
课程
+’]’from(selectdistinct
课程
fromtb)aset@sql=@sql+’,
合计
=SUM(
分数
)fromtbgroupby
姓名
withrollup’exec(@sql)/*
李四
84
94
0
74
252
张三
83
93
80
74
330NULL
84
94
80
74
582*/
createtabletbl(namenvarchar(10),kechengnvarchar(10),fengshuint)
insertintotblvalues(‘
张
三
’,’
语文
’,74)
insertintotblvalues(‘
张三
’,’
数学
’,83)
insertintotblvalues(‘
张三
’,’
物理
’,93)
insertintotblvalues(‘
李四
’,’
语文
’,74)
insertintotblvalues(‘
李四
’,’
数学
’,84)
insertintotblvalues(‘
李四
’,’
物理
’,94)
insertintotblvalues(‘
张三
’,
英语
’,80)
declare@sqlnvarchar(3000)
declare@tempnvarchar(10)
declare@temp1nvarchar(10)
set@sql=‘selectmax(name)as
行列
,’
declare@howrownvarchar(10)
declaremycolumnscrollcursorfor(selectkechengfromtblgroupbykecheng)-----
判断有几列
unionallselect’
合计
’
openmycolumn
fetchfirstfrommycolumninto@howrow
while@@FETCH_STATUS=0
begin
--------------------------------
set@temp=‘‘‘‘+@howrow+’’’’
set@temp1=@howrow