
正文
oracle多张表取多列,oracle 多表查询,多条重复记录只取一条
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
急! oracle 一列数据变多列问题。
你想要的是行转列,通常这样查询需要分组,请给出分组列,如果没有规律,sql是没办法写的。
针对你现在截图,如果只有两个结果,可以这样写:
select max(tsum) tsum1, min(tsum) tsum2 from 表名;
相关问答
Q1: oracle多行转多列
你这个应该是一张通用的表吧,就是说下面还有可能出现,诸如ID=10002或者10003等。
如果这样的话,就用row_number()over(partition by ID),进行排序,然后把排序后的再进行转换。
比如上面这个就是
select row_number()over(partition by ID) id_id,id,countnum from table
这样会出来结果,如下
id_id id countnum
1 10001 30
2 10001 40
3 10001 50
1 10002 20
2 10002 50
3 10002 30
上面的结果没有排序,也可以按照countnum进行排序,就是在partition by id的后面加一个orderby,看你用不用了。
然后再对这个结果进行行列转换,用case when就行,我假设上张表取别名为a
那么
select id,(case when id_id=1 then countnum end) column1,,(case when id_id=2 then countnum end) column2,(case when id_id=3 then countnum end) column3,(case when id_id=4 then countnum end) column3,........from a
不过这种写法有一个问题,就是必须写一个最长的,不然你就有数据不能显示出来。
如果只有一个10001,那么可以利用rownum直接编组。
Q2: Oracle 合并多张表,要求相同的列合并,不同的列并列显示。
create table table_new as
select a.列1,b.列2,b.列3,b.列4 from table_a a,table_b b
where a.列1=b.列1(+);
注:列1为两表关联字段,B表信息多于A表信息,b.列2,b.列3,b.列4为B表自己独有字段,以此类推.
Q3: oracle 关联时怎样将关联成的多行显示成多列
你要的是一个字段用逗号分割,还是几个字段。
如果是一个字段逗号分隔,那么
select b.name,wmsys.wm_concat(b.acc_nbr) acc_nbr from table1 a,table2 b where a.name=b.name group by b.name
这样出来的结果是
name acc_nbr
aaa 1,2,3,4
bbb 2,4,5
如果要几个字段,那么就要用到 rank()over()开窗了,然后利用case when 或者decode进行转换,最后再group by 合并
关于oracle多张表取多列和oracle 多表查询,多条重复记录只取一条的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。



![【电子书】[文化艺术] 《告别百年激进:温铁军演讲录2004-2014(上卷)》[温铁军][epub+mobi+azw3] 【电子书】[文化艺术] 《告别百年激进:温铁军演讲录2004-2014(上卷)》[温铁军][epub+mobi+azw3]](https://www.04ip.com/template/qe/style/noimg/16.jpg)
![【电子书】[经典小说] 《无愁河的浪荡汉子·八年(上卷)》[黄永玉][epub+mobi+azw3] 【电子书】[经典小说] 《无愁河的浪荡汉子·八年(上卷)》[黄永玉][epub+mobi+azw3]](https://www.04ip.com/template/qe/style/noimg/17.jpg)


