如下:
学号 姓名 课程名称 成绩
101 Tom English 88
101 Tom PE 76
101 Tom Chinese 66
如何将它合并成一条记录,如:
学号 姓名 English PE Chinese
101 Tom 88 76 66
SQL语句如何实现?
学号 姓名 课程名称 成绩
101 Tom English 88
101 Tom PE 76
101 Tom Chinese 66
如何将它合并成一条记录,如:
学号 姓名 English PE Chinese
101 Tom 88 76 66
SQL语句如何实现?
SELECT 学号, 姓名
FROM 表
GROUP BY 学号, 姓名
PIVOT 课程名称
店名 地区 级别
d1 北京 级别1
d2 北京 级别2
d3 天津 级别2
d4 河肥 级别3
d5 杭州 级别4
d6 杭州 级别3想得到如下的结果:地区 级别1的店数 级别2的店数 级别3的店数 级别4的店数 合计
北京 1 1 0 0 2
杭州 0 0 1 1 2
河肥 0 0 1 0 1
天津 0 1 0 0 1
合计 1 2 2 1 6如果列是固定的,我还可以做(case一个一个列出来)...但是现在是固定的,也就是说有可能级别有5,6,7....这样就要把所有的级别列出来,而不是从中选几个显示出来,怎么写SQL语句?
-----------------------
declare @sql varchar(8000)
set @sql = 'select 地区'
select @sql = @sql + ',sum(case 级别 when '''+cast(级别 as varchar(10))+''' then 1 else 0 end) as ['+cast(级别 as varchar(10))+'的店数]'
from (select distinct 级别 from A表) as a
select @sql = @sql+' from A表 group by 地区'exec(@sql)
go
呵,这是高手的回答,送你!
再vb中是可以使用的,交叉表JetSQL支持,T-SQL不支持,所以只能应用于Access,SQLServer不行
rs.open "TRANSFORM First(成绩) SELECT 学号, 姓名 FROM 表 GROUP BY 学号, 姓名 PIVOT 课程名称",cnn