`
xkahala
  • 浏览: 48639 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

oracle中多行合并成列

阅读更多
   今天碰到一个问题,A表与B表一对多,B表与C表一对多的关系,A表的主键是B表的外键,B表的主键是C表的外键。
    现在要查,A表所对应的C表的记录
两种方案:
         一、以C表的需要字段作为主要的方面去查A表所对应的记录
         select
            td.devid,
            td.devname,
            cai.title 
        from
            CORE_ATTACHMENT_INFO cai,
            taizhang_devices td,
            taizhang_places tp,
            taizhang_devicedocument tdd 
        where
            td.devid = tdd.devid
            and tp.placeid = td.placeid
            and cai.billid = tdd.docid
但是这样出现了一个问题,A表记录的那个查出字段会重复
           二、以A表为主
select              
              dev.devid,dev.devname,dev.devtypeid,dev.placeid,dev.pwlevel,
              WMSYS.WM_CONCAT(att.title) title,
              WMSYS.WM_CONCAT(att.attid) attid,
              WMSYS.WM_CONCAT(att.filename) filename
            from taizhang_devices dev
                 left join
                 taizhang_devicedocument doc
                 on dev.devid=doc.devid
                 left join CORE_ATTACHMENT_INFO att
                 on doc.docid=att.billid
                 group by dev.devid ,dev.devname,dev.devtypeid,dev.placeid,dev.pwlevel

oracle中可以合同行为列的函数。
但是其只有oracle 10g才支持


         
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics