多条记录如何合并成一条记录,SQL高手请进

gisgeoboy 2003-10-20 10:10:47
如下:
学号 姓名 课程名称 成绩
101 Tom English 88
101 Tom PE 76
101 Tom Chinese 66
如何将它合并成一条记录,如:
学号 姓名 English PE Chinese
101 Tom 88 76 66
SQL语句如何实现?
...全文
115 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
胖河马 2003-10-23
  • 打赏
  • 举报
回复
跟写别的查询一样
rs.open "TRANSFORM First(成绩) SELECT 学号, 姓名 FROM 表 GROUP BY 学号, 姓名 PIVOT 课程名称",cnn
gisgeoboy 2003-10-22
  • 打赏
  • 举报
回复
楼上:在vb中如何写交叉表查询,请指点!!
NotReady 2003-10-21
  • 打赏
  • 举报
回复
不怎么知道了!
胖河马 2003-10-21
  • 打赏
  • 举报
回复
>这个在Access中可以,但在vb中就不行。那么在vb中如何使用交叉表查询呢?
再vb中是可以使用的,交叉表JetSQL支持,T-SQL不支持,所以只能应用于Access,SQLServer不行
ostrich3000 2003-10-21
  • 打赏
  • 举报
回复
高手,解释解释上边的那个SQL语句好么,看起来挺复杂的
duoshanx 2003-10-20
  • 打赏
  • 举报
回复
A表结构如下:
店名 地区 级别
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
呵,这是高手的回答,送你!

gisgeoboy 2003-10-20
  • 打赏
  • 举报
回复
这个在Access中可以,但在vb中就不行。那么在vb中如何使用交叉表查询呢?
胖河马 2003-10-20
  • 打赏
  • 举报
回复
如果是Access可以这样

TRANSFORM First(成绩)
SELECT 学号, 姓名
FROM 表
GROUP BY 学号, 姓名
PIVOT 课程名称

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧