回 帖 发 新 帖 刷新版面

主题:[讨论]请教SQL查询

请教大家

设有这样一个表:
姓名     性别       任课
张三     男         英语
张三     男         语文
张三     男         数学
李四     男         体育
李四     男         音乐

如何写sql得到这样的一个查询结果
张三    男     英语   语文   数学
李四    男     体育   音乐

注:这个查询结果是批量数据的结果,不是某一条的查询结果

回复列表 (共4个回复)

沙发

可以写临时表,得到这个结果.

板凳



select aa,bb,[任课]=[数学]+' '+[体育]+' '+[音乐]+' '+[英语]+' '+[语文]+' ' from (select aa,bb,[数学]=max(case cc when '数学' then cc else '' end),[体育]=max(case cc when '体育' then cc else '' end),[音乐]=max(case cc when '音乐' then cc else '' end),[英语]=max(case cc when '英语' then cc else '' end),[语文]=max(case cc when '语文' then cc else '' end) from a group by aa,bb) as g 

3 楼


看了头晕晕,能不能详细点

4 楼


就是利用case 语句 实现交叉表,然后再在最外层用select 投影出来!

我来回复

您尚未登录,请登录后再回复。点此登录或注册