本人学业不精,碰到多行变多列问题。查了许多资料,发现多行变一列的比较多,多列的很少。望高手相助。
问题如下,目前有个表1,需要生成表2的视图表1
用户种类,地区,部门,附带信息标题,附带信息内容
type,area,dept,title,data
-------------------------------
用户1,上海,营销,标题11,内容11
用户1,上海,营销,标题12,内容12
用户1,上海,营销,标题13,内容13
-------------------------------
用户2,上海,营销,标题21,内容21
用户2,上海,营销,标题22,内容22
-------------------------------
用户3,北京,广告,标题31,内容31
-------------------------------表2
用户种类,地区,部门,附带信息标题1,附带信息内容1,附带信息标题2,附带信息内容2,附带信息标题3,附带信息内容3
type,area,dept,title1,data1,title2,data2,title3,data3
-------------------------------------------------------------
用户1,上海,营销,标题11,内容11,标题12,内容12,标题13,内容13
用户2,上海,营销,标题21,内容21,标题22,内容22,null,null
用户3,北京,广告,标题31,内容31,null,  null,  null,null前3个字段可以看作一个ID,根据这3个去分类。
表1数据库中对应相同的(用户种类,地区,部门)最多只有3条记录,不会发生有4个附带信息记录的情况。
表2中是固定的6列(3列是附带信息标题1,另3列式附带信息内容)本人希望用Oracle的SQL语句实现视图,而不是采用程序处理的方式,不知道到SQL该怎么写。
以前看过高手都用SYS_CONNECT_BY_PATH,没怎么看懂,不知这里如何使用。真的很急。
望高手赐教,不胜感激。另外本人上网实在是非常慢,回复不太方便,另外对于给分系统还不明白,如果有啥搞错的,望各位高手们理解。

解决方案 »

  1.   

    楼主参考一下我的blog:
    http://blog.csdn.net/kinglht
    <<纵向记录横向显示的问题>>
      

  2.   

    谢谢楼上,不过我已经用别的方法实现了,今晚准备把自己做的sql传上。关键是使用了 SYS_CONNECT_BY_PATH 去实现的,
    另外关于多列,先把多列合并成一列,然后用substr(),instr()函数分割就没问题了。
    实际上还是多行变一列的问题。
      

  3.   

    中间一段时间忘了密码,一直登陆不上来,没能结贴,实在不好意思。
    上面的行变列还是要参照下面的例子,给了我不少帮助。
    http://blog.csdn.net/skyspark/archive/2007/07/28/1713896.aspx这个帖子写得非常清楚,稍微变化一下就能自己用了。主要是自己改造后再作一下字符串处理。但是最终结果是倒序的,还不知道有没有效率更高点的处理方法。
    希望对大家有用。