数据库查询出来的结果作为字段重新排序去重显示

ITxxb 2017-12-24 11:22:37
教师号 星期号 是否有误
1 2 有
1 3 有
2 1 有
3 2 有
1 2 有

转为:
教师号 星期一 星期二 星期三
1 2 1
2 1
3 1


通过sql将上面的的记录转为下面这样显示该怎样弄,求教各位大神啊
...全文
577 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2017-12-25
  • 打赏
  • 举报
回复
楼主百度一下“行转列“,有问题再来追问;
花开了叫我 2017-12-25
  • 打赏
  • 举报
回复
--楼主数据描述不清楚 只能猜测 如下 SQL> with t("教师号",b,c) as ( 2 select '1' ,'2' ,'有' from dual 3 union all 4 select '1' ,'3' ,'有' from dual 5 union all 6 select '2' ,'1' ,'有' from dual 7 union all 8 select '3' ,'2' ,'有' from dual 9 union all 10 select '1' ,'2' ,'有' from dual) 11 SELECT * FROM ( 12 SELECT "教师号",b FROM T WHERE c ='有') 13 PIVOT (COUNT(*) FOR b IN ('1' AS "星期一",'2' AS "星期二",'3'AS "星期三")) 14 ORDER BY 1 15 / 教师号 星期一 星期二 星期三 ------ ---------- ---------- ---------- 1 0 2 1 2 1 0 0 3 0 1 0
yujiaxucheng 2017-12-25
  • 打赏
  • 举报
回复
1、先去重,可以考虑开窗函数 over (partition by ...); 2、再考虑行转列、列转行,Oracle里有 pivot和unpivot; 3、最好贴格式化代码和截图,准备给你建个表导数据试一下的,但是没明白具体需求,先上班了,有问题再问。 【上面一个帖子太匆忙有错别字】
yujiaxucheng 2017-12-25
  • 打赏
  • 举报
回复
1、先去重,可以考虑开创函数 over (partition by ...); 2、在考虑行转列、列转行,Oracle里有 pivot和unpivot; 3、最好贴格式化代码和截图,准备给你建个表导数据试一下的,但是没明白具体需求,先上班了,有问题再问。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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