oracle中动态行列转换 oraclesql动态行列转换列数不定 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Quote: 引用 楼主 sourcecode1 的回复:Quote:11G:with t1 as (select 1 dept_id, 'dept 1' dept_nm from dual),t2 as (select 1 emp_id, 'n1' emp_nm, 'M' sex, 1 dept_id from dual union all select 2 emp_id, 'n2' emp_nm, 'F' sex, 1 dept_id from dual union all select 3 emp_id, 'n3' emp_nm, 'M' sex, 1 dept_id from dual union all select 4 emp_id, 'n4' emp_nm, 'F' sex, 1 dept_id from dual)select * from (SELECT t1.dept_nm, emp_id, sex FROM T1, T2 WHERE T1.DEPT_ID = T2.DEPT_ID) pivot(max(sex) for(emp_id) in(1 n1, 2 n2, 3 n3, 4 n4)); 11g用pivot之前的版本可以用max(decode)由于你的列数不固定,只能采用动态语句的方式先根据语法构建sql语句,然后利用拼接的结果去执行查询 问下你业务的逻辑问题如果存在重名的职工你准备如何处理,oracle肯定是不允许查询的两列列名相同的 select * from (SELECT T1.部门名称, T2.员工名, T2.性别 FROM 部门表 T1, 员工表 T2 WHERE T1.部门ID = T2.部门ID order by T2.员工Id) pivot(max(性别) for(员工名) in(any));--注:ANY 仅在XML 中可以使用Oracle 11g 行列互换 pivot 和 unpivot 说明 有个要求就只能是用sql来输出结果, 员工数是不定的,所以列也是不固定的。而ANY 是在XML中使用的,想过In里面用子查询好像是不可以的。 自己解决了,使用存储过程动态拼接sql 【求助】OTL使用一个问题,程序core掉,蛋疼 超大规模系统存储上技术 Oracle10g数据库应用部署的问题 两台ORACLE数据库怎么实现数据同步,用SHELL 高分求教关于数据表的设计问题 一个关于表使用聚合函数的问题:查找所有员工的最大工资数值且显示该工资所属人的ID,详见内。 小弟今天第一次接触ROACLE,请教,建数据库怎么键啊?送高分 求解一个分段+倒序输出的问题?!?! 数据库的备份与恢复 求助下载Developer 2000 求帮助 PL/SQL developer 点击Tables文件夹显示ora 00936 怎么根据主键来更新数据
之前的版本可以用max(decode)
由于你的列数不固定,只能采用动态语句的方式
先根据语法构建sql语句,然后利用拼接的结果去执行查询
如果存在重名的职工你准备如何处理,oracle肯定是不允许查询的两列列名相同的
from (SELECT T1.部门名称, T2.员工名, T2.性别
FROM 部门表 T1, 员工表 T2
WHERE T1.部门ID = T2.部门ID
order by T2.员工Id) pivot(max(性别) for(员工名) in(any));
--注:ANY 仅在XML 中可以使用
Oracle 11g 行列互换 pivot 和 unpivot 说明
而ANY 是在XML中使用的,想过In里面用子查询好像是不可以的。