yhkn.net
当前位置:首页 >> 求sql——orAClE 10g 多表之间列转行,具体如下图(... >>

求sql——orAClE 10g 多表之间列转行,具体如下图(...

select sum(decode(A,'第一天',B)) 第一天,sum(decode(A,'第二天',B)) 第二天,sum(decode(A,'第三天',B)) 第三天,sum(decode(A,'第四天',B)) 第四天,sum(decode(A,'第五天',B)) 第五天 from 表;

列转行就是用union,如果性能不好那就优化下中间表的查询,没别的办法

select t.* from(select pkid,swjxrwid x where swjxrwid is not nullunion allselect pkid,xwjxrwid where xwjxrwid is not nullunion allselect pkid,wsjxrwid where wsjxrwid is not null) torder by t.pkid

SELECT YJKEY, REGEXP_SUBSTR(ADDUSERCD, '[^,]+', 1, LEVEL, 'i') AS ADDUSERCD FROM (SELECT 100000004018 AS YJKEY, '1,2,3' AS ADDUSERCD FROM DUAL) T CONNECT BY LEVEL <= LENGTH(ADDUSERCD) - LENGTH(REGEXP_REPLACE(ADDUSERCD, ',', '')) + 1;

oracle下可以用函数decode处理:select 产品名称,sum(decode(季度,'第一季度',销售额,0)) 第一季度销售额,sum(decode(季度,'第二季度',销售额,0)) 第二季度销售额,sum(decode(季度,'第三季度',销售额,0)) 第三季度销售额,sum(decode(季度,'第四季度',销售额,0)) 第四季度销售额,from 表名 group by 产品名称;

列数都不能确定,此功能 不能实现类似可以这样:select decode(class,'一班',id,null) 一班,decode(class,'二班',id,null) 二班,decode(class,'三班',id,null) 三班..from table_name;

ResultSetMetaData rsmt=rs.getMetaData();得到结果集(rs)的结构信息,比如字段数、字段名等.

你好!如果希望得到你的结果,首先你要确认一件事,即在两个表中,相同姓名人的ID相同,如果不相同,那么结果中就不能有ID列.如果相同,建议用下面的语句实现:select a.id,a.姓名,sum(a.工资)+sum(b.工资) from a,b where a.id=b.id groupby a.id,a.姓名;打字不易,采纳哦!

--行列转换(列长度不大于255,行过多则无法进行转换与数据库机制相关)create ##tmp_table(ColName nvarchar(255)) declare @sql nvarchar(4000) --以原来的列标题

列转行用decode函数 或者 case when函数 都可以 decode效率能高一些

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.yhkn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com