http://community.csdn.net/Expert/topic/3421/3421357.xml?temp=.8397333
解决方案 »
- 如何读取sqlserver中的text ntext字段内容?
- MySQL 输出查询到的数据数量
- 求解? ex.getMessage()这个异常怎么解决,无法连接到数据库??
- ^^轻松收集文章!轻松发布文章!轻松赚钱!!^^ 本人半年业余时间呕心“拙”作,欢迎下载使用!~
- SQL 置疑\紧急模式
- 表的列等于另一张的列
- SQL2000数据库导出问题,高手进!!!
- 我用VF的升迁向导在sql server建立表后,怎么用vf在此表中插入的值是NULL啊?
- 如何高效地将大批量记录导入到数据库?如10万条,存放在文本文件中.
- 高手请指点-如何设置双数据库服务器?
- MSDE如何升级(PACK 3)
- 请问哪种查询效率更高?
select stu,数学=max(case course when '数学' then score else 0 end),
语文=max(case course when '语文' then score else 0 end)
from new
group by stu
/*
结果
stu 数学 语文
----------- ----------- -----------
1 89 90
2 34 45(所影响的行数为 2 行)
*/
t1.stu =t2.stu)
举个例子:
Create table test (name char(10),km char(10),cj int)
go
insert test values('张三','语文',80)
insert test values('张三','数学',86)
insert test values('张三','英语',75)
insert test values('李四','语文',78)
insert test values('李四','数学',85)
insert test values('李四','英语',78)
想得到:
姓名 语文 数学 英语
张三 80 86 75
李四 78 85 78declare @sql varchar(8000)
set @sql = 'select name'
select @sql = @sql + ',sum(case km when '''+km+''' then cj end) ['+km+']'
from (select distinct km from test) as a
select @sql = @sql+' from test group by name'
exec(@sql)
1:可以使用子查询,每个子查询中将所有的科目同人名连接起来。
2:对子查询使用全外连接,避免由于某些科目没有成绩而丢失数据。
3:如果科目不定的话,最好使用一个可以动态生成的sql语句。