请你看清楚,再回复,这里没有成绩的问题,其实就是一个课程表的问题。原表bjkm:
bj km xm
高三(1) 语文 张三
高三(1) 数学 李四
高三(2) 语文 张三
高三(2) 数学 李四
高三(3) 语文 王五
高三(3) 数学 赵六
高三(4) 语文 王五
高三(4) 数学 赵六转变成列如下:
班级 语文 数学
高三(1) 张三 李四
高三(2) 张三 李四
高三(3) 王五 赵六
高三(4) 王五 赵六我用的语句如下:
SELECT bj as 班级,
MAX(CASE km WHEN '语文' THEN xm END) AS 语文,
MAX(CASE km WHEN '数学' THEN xm END) AS 数学
FROM bjkm
GROUP BY bj查出来的结果:姓名都是null,并不是任课教师
bj km xm
高三(1) 语文 张三
高三(1) 数学 李四
高三(2) 语文 张三
高三(2) 数学 李四
高三(3) 语文 王五
高三(3) 数学 赵六
高三(4) 语文 王五
高三(4) 数学 赵六转变成列如下:
班级 语文 数学
高三(1) 张三 李四
高三(2) 张三 李四
高三(3) 王五 赵六
高三(4) 王五 赵六我用的语句如下:
SELECT bj as 班级,
MAX(CASE km WHEN '语文' THEN xm END) AS 语文,
MAX(CASE km WHEN '数学' THEN xm END) AS 数学
FROM bjkm
GROUP BY bj查出来的结果:姓名都是null,并不是任课教师
班级 语文 数学
----- ---- ----
高三(1) 张三 李四
高三(2) 张三 李四
高三(3) 王五 赵六
高三(4) 王五 赵六(所影响的行数为 4 行)----------------------论坛签名--------------------------yp:你好!
截至 2011-04-09 17:14:37 前:
你已发帖 26 个, 未结贴 2 个;结贴率为: 92.31%
当您的问题得到解答后请及时结贴:进入>>>>>>
-- Author: stone
-- Version:V1.001
-- Date:2011-04-09 17:28:54
------------------------------------
-- Test Data: ta
If object_id('ta') is not null
Drop table ta
Go
Create table ta(bj nvarchar(5),km nvarchar(2),xm nvarchar(2))
Go
Insert into ta
select '高三(1)','语文','张三' union all
select '高三(1)','数学','李四' union all
select '高三(2)','语文','张三' union all
select '高三(2)','数学','李四' union all
select '高三(3)','语文','王五' union all
select '高三(3)','数学','赵六' union all
select '高三(4)','语文','王五' union all
select '高三(4)','数学','赵六'
Go
Go
--Start
SELECT bj as 班级,
MAX(CASE km WHEN '语文' THEN xm END) AS 语文,
MAX(CASE km WHEN '数学' THEN xm END) AS 数学
FROM ta
GROUP BY bj
--Result:
/*班级 语文 数学
----- ---- ----
高三(1) 张三 李四
高三(2) 张三 李四
高三(3) 王五 赵六
高三(4) 王五 赵六(所影响的行数为 4 行)
*/
--End
Go
Insert into bjkm
select '高三(1)','语文','张三' union all
select '高三(1)','数学','李四' union all
select '高三(2)','语文','张三' union all
select '高三(2)','数学','李四' union all
select '高三(3)','语文','王五' union all
select '高三(3)','数学','赵六' union all
select '高三(4)','语文','王五' union all
select '高三(4)','数学','赵六'
go
select bj,
语文=max(case when km='语文' then xm else '' end),
数学=max(case when km='数学' then xm else '' end)
from bjkm
group by bj
--多门课程动态:
declare @s nvarchar(4000)
set @s=''
Select @s=@s+','+quotename(km)+'=max(case when km='+quotename(km,'''')+' then xm else '''' end)'
from bjkm group by km
exec('select bj'+@s+' from bjkm group by bj')
go
drop table bjkm
/*
bj 语文 数学
----- ---- ----
高三(1) 张三 李四
高三(2) 张三 李四
高三(3) 王五 赵六
高三(4) 王五 赵六(4 行受影响)
*/
Go
Insert into ta
select '高三(1)','语文','张三' union all
select '高三(1)','数学','李四' union all
select '高三(2)','语文','张三' union all
select '高三(2)','数学','李四' union all
select '高三(3)','语文','王五' union all
select '高三(3)','数学','赵六' union all
select '高三(4)','语文','王五' union all
select '高三(4)','数学','赵六'
Goselect * from taSELECT bj as 班级,
MAX(CASE km WHEN '语文' THEN xm END) AS 语文,
MAX(CASE km WHEN '数学' THEN xm END) AS 数学
FROM ta
GROUP BY bj
/*高三(1) 张三 李四
高三(2) 张三 李四
高三(3) 王五 赵六
高三(4) 王五 赵六*/
--mei wei ti
/*
高三(1) 张三 李四
高三(2) 张三 李四
高三(3) 王五 赵六
高三(4) 王五 赵六
*/
请问:你是sqlserver2000的那个版本啊
/*
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 2)
*/