Sql Server 2000 行转列 的实现
2011-07-13 10:14
288 查看
use tempdb;
go
--科目表
if object_id('dbo.subject') is not null
drop table dbo.subject;
go
create table subject(sid int identity(1,1) not null primary key ,sname varchar(1000));
go
--学生表
if object_id('dbo.student') is not null
drop table dbo.student
go
create table dbo.student(stuid char(10) not null primary key, studname varchar(50))
go
if object_id('dbo.score') is not null
drop table dbo.score
go
create table dbo.score(stuid char(10) not null,sid int not null,
score int not null,
constraint pk_score(stuid,sid));
insert into subject(sname) values('语文');
insert into subject(sname) values('数学');
insert into subject(sname) values('英语');
DECLARE @strSQL VARCHAR(8000)
SET @strSQL = 'SELECT t.STUNAME [姓名]'
SELECT @strSQL = @strSQL + ',SUM(CASE s.SNAME WHEN ''' + SNAME + ''' THEN g.[Score] END) [' + SNAME + ']'
FROM (SELECT SNAME FROM [Subject]) AS tmp
SELECT @strSQL = @strSQL + ' FROM [Score] g,[Subject] s, [Student] t WHERE g.SID=s.SID AND g.STUID = t.STUID GROUP BY t.STUID, t.STUNAME'
declare @strsql varchar(100)
go
--科目表
if object_id('dbo.subject') is not null
drop table dbo.subject;
go
create table subject(sid int identity(1,1) not null primary key ,sname varchar(1000));
go
--学生表
if object_id('dbo.student') is not null
drop table dbo.student
go
create table dbo.student(stuid char(10) not null primary key, studname varchar(50))
go
if object_id('dbo.score') is not null
drop table dbo.score
go
create table dbo.score(stuid char(10) not null,sid int not null,
score int not null,
constraint pk_score(stuid,sid));
insert into subject(sname) values('语文');
insert into subject(sname) values('数学');
insert into subject(sname) values('英语');
DECLARE @strSQL VARCHAR(8000)
SET @strSQL = 'SELECT t.STUNAME [姓名]'
SELECT @strSQL = @strSQL + ',SUM(CASE s.SNAME WHEN ''' + SNAME + ''' THEN g.[Score] END) [' + SNAME + ']'
FROM (SELECT SNAME FROM [Subject]) AS tmp
SELECT @strSQL = @strSQL + ' FROM [Score] g,[Subject] s, [Student] t WHERE g.SID=s.SID AND g.STUID = t.STUID GROUP BY t.STUID, t.STUNAME'
declare @strsql varchar(100)
相关文章推荐
- Sql Server 2000 行转列 的实现(横排)
- SQL Server 2000+ADO.NET实现并发控制.
- sql server 2000 作业调度+存储过程实现在自动更新表格
- 用SQL SERVER 2000的存储过程实现数据转成XML
- 用储存过程实现对数据库表的增、删、改 sql server 2000
- Java 实现连接sql server 2000(JDBC数据库访问例子)
- VB实现SQL Server 2000存储过程调用
- NTILE函数在SQL Server 2000中的实现方法
- Java 实现连接sql server 2000
- Java 实现连接sql server 2000(JDBC数据库访问例子)-1
- Java 实现连接sql server 2000(JDBC数据库访问例子)
- 黑马程序员学习笔记4---SQL SERVER 2000/2005 实现行转列和列转行
- 如何在Sql Server 2000中用一条语句实现树的查询
- Java 实现连接sql server 2000(JDBC数据库访问例子)
- Sql Server 2000,Sql Server 2005以及Oracle下如何实现数据分页
- 表中数据转置(Pivot)在Sql Server 2000 和Sql Server 2005 的实现
- 【原创源码】(01):利用事件-委托,实现主-子窗体动态显示,不同菜单栏,不同工具栏。(类似SQL Server 2000 企业管理器)
- Java 实现连接sql server 2000(JDBC数据库访问例子)-2
- Java 实现连接sql server 2000(JDBC数据库访问例子)
- Java 实现连接sql server 2000