`
chilongxph
  • 浏览: 135405 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

oracle 列转行

阅读更多
表字段:cid(外键), imgId(主键),width,height,url,status.

每个外键可对应三条记录,现在在查询时,要根据cid获取到一条记录,这样就涉及到了列传行的问题。大概写法如下:不知各位仁兄可有更好的写法?忘不吝赐教!

select * from
    (select nip.url as p1 from nong_image_properties nip where nip.resourceid='22') n1,
    (select nip.url as p2 from nong_image_properties nip where nip.resourceid='23') n2,
    (select nip.url as p3 from nong_image_properties nip where nip.resourceid='24')n3


2.使用函数查询:(昨日面试遇到一个这样的sql题,一时想不起来这种写法了,故重新在sqls——plus里调试了一下,记录与此,与列行互转无关)
select avg(case when t.salary>=3000 and t.sex=0 then salary end)a,
sum(case when t.salary<=3000 and t.sex=0 then salary end) b,
count(case when t.salary>=3000 and t.sex=1 then salary end) b
from emp t
  
0
0
分享到:
评论
2 楼 chilongxph 2010-09-16  
楼上正解,此种方式的问题正在与此,如果过多的话,就只能去使用存储过程解决了。
1 楼 ldbjakyo 2010-09-15  
如果列数比较多,岂不自连接很多次呀,我们90多列的动态表没用SQL。。。

相关推荐

Global site tag (gtag.js) - Google Analytics