CREATE TABLE student (stdname nvarchar( 10 ),stdsubject nvarchar( 10 ),result int )
INSERT INTO student VALUES ( ' 張三 ' , ' 語文 ' , 80 )
INSERT INTO student values ( ' 張三 ' , ' 數學 ' , 90 )
INSERT INTO student VALUES ( ' 張三 ' , ' 物理 ' , 85 )
INSERT INTO student VALUES ( ' 李四 ' , ' 語文 ' , 85 )
INSERT INTO student values ( ' 李四 ' , ' 數學 ' , 92 )
INSERT INTO student VALUES ( ' 李四 ' , ' 物理 ' , 82 )
INSERT INTO student VALUES ( ' 李四 ' , ' 化學 ' , 82 )
INSERT INTO student VALUES ( ' 李四 ' , ' 化學 ' , 82 )
SELECT * FROM student
CREATE TABLE student2 (stdname nvarchar(10),化學 int,數學 int,物理 int ,語文 int )
INSERT INTO student2 VALUES ('李四',164,92,82,85)
INSERT INTO student2 VALUES ('張三',0,90,85,80)
SELECT * FROM student2
行列動態轉換語法
declare @sql varchar(4000)
set @sql='select stdname'
select @sql=@sql+
',isnull(sum( case stdsubject when '''+stdsubject+''' then Result end), 0 ) '''+stdsubject+ ''''
from (select distinct stdsubject from student )a
select @sql=@sql+ ' from student group by stdname '
print @sql
exec (@sql)
declare @strsql varchar(4000)
select @strSql = ''
select @strSql = @strSql + ' union all
select [stdname], ''' + [name] + ''' as [科目],[' + [name] + '] ' +
' from [student2]
'
from tempcloumns
select @strSql = substring(@strSql, 11 ,len(@strSql)) + ' order by stdname,[科目] '
print @strsql