教师号  星期号 是否有误
1 2 有
1 3 有
2 1 有
3 2 有
1 2 有

转为:
教师号 星期一 星期二 星期三
1 2 1
2 1
3 1
通过sql将上面的的记录转为下面这样显示该怎样弄,求教各位大神啊

解决方案 »

  1.   

    1、先去重,可以考虑开创函数  over (partition by ...);
    2、在考虑行转列、列转行,Oracle里有 pivot和unpivot;
    3、最好贴格式化代码和截图,准备给你建个表导数据试一下的,但是没明白具体需求,先上班了,有问题再问。
      

  2.   

    1、先去重,可以考虑开窗函数  over (partition by ...);
    2、再考虑行转列、列转行,Oracle里有 pivot和unpivot;
    3、最好贴格式化代码和截图,准备给你建个表导数据试一下的,但是没明白具体需求,先上班了,有问题再问。
    【上面一个帖子太匆忙有错别字】
      

  3.   

    --楼主数据描述不清楚 只能猜测 如下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