我用SQL查出结果如下
组装批号 材料批号 材料料号 规格型号 消耗数量
A10112089-001 1000 262512 0201 1.2nH±0.1nH 3786
A10112089-001 1009 262334 0201 8.2pF±0.1pF 3786
A10112089-001 1010 23019 0201 0.6pF±0.1pF 3786
A10112089-001 1010 23020 0201 0.7pF±0.1pF 3786
A10112089-001 1010 262333 0201 8pF±0.1pF 3786
A10112089-001 1010 262339 0201 15pF±5% 3786
A10112089-001 1010 262881 0201 4.7pF±0.1pF 3786
A10113110-001 1000 262512 0201 1.2nH±0.1nH 3777
A10113110-001 1009 262334 0201 8.2pF±0.1pF 3777
A10113110-001 1010 23019 0201 0.6pF±0.1pF 3777
A10113110-001 1010 23020 0201 0.7pF±0.1pF 3777
A10113110-001 1010 262333 0201 8pF±0.1pF 3777
A10113110-001 1010 262339 0201 15pF±5% 3777
A10113110-001 1010 262881 0201 4.7pF±0.1pF 3778
想实现下面的格式
组装批号 材料1 材料2 材料3.。。
A10112089-001 1000/262512/0201 1.2nH±0.1nH/3786 1009/262334/0201 8.2pF±0.1pF/3786 。。
A10113110-001 1000/262512/0201 1.2nH±0.1nH/3777 1009/262334/0201 8.2pF±0.1pF/3777 。。
每个组装批使用材料种类不定,如何实现,请高手帮忙
组装批号 材料批号 材料料号 规格型号 消耗数量
A10112089-001 1000 262512 0201 1.2nH±0.1nH 3786
A10112089-001 1009 262334 0201 8.2pF±0.1pF 3786
A10112089-001 1010 23019 0201 0.6pF±0.1pF 3786
A10112089-001 1010 23020 0201 0.7pF±0.1pF 3786
A10112089-001 1010 262333 0201 8pF±0.1pF 3786
A10112089-001 1010 262339 0201 15pF±5% 3786
A10112089-001 1010 262881 0201 4.7pF±0.1pF 3786
A10113110-001 1000 262512 0201 1.2nH±0.1nH 3777
A10113110-001 1009 262334 0201 8.2pF±0.1pF 3777
A10113110-001 1010 23019 0201 0.6pF±0.1pF 3777
A10113110-001 1010 23020 0201 0.7pF±0.1pF 3777
A10113110-001 1010 262333 0201 8pF±0.1pF 3777
A10113110-001 1010 262339 0201 15pF±5% 3777
A10113110-001 1010 262881 0201 4.7pF±0.1pF 3778
想实现下面的格式
组装批号 材料1 材料2 材料3.。。
A10112089-001 1000/262512/0201 1.2nH±0.1nH/3786 1009/262334/0201 8.2pF±0.1pF/3786 。。
A10113110-001 1000/262512/0201 1.2nH±0.1nH/3777 1009/262334/0201 8.2pF±0.1pF/3777 。。
每个组装批使用材料种类不定,如何实现,请高手帮忙
解决方案 »
- 关于dmp文件 高版本向低版本 导入的问题?
- 主机IP地址修改后,Oracle需要做哪些修改?
- transaction slot transaction table transaction entry三个东西的疑惑
- oracle中查询时间等于当前时间后两天该怎么写语句
- 嵌套声明游标出错,ORA-01400
- 一个不可思议的问题!
- 装ORACLE时把字符集设置成了UTF8,这样好不好,是不是占用空间大,和GBK有什么区别,我用的ORACLE10
- 小弟想学orcale 9i了,说大哥,大姐推举起这方面的好书?
- 请问oracle9i中insert table成功后再次登陆后,select时无内容?
- 快照数据问题,在线等待!!!
- ojdbc14和ojdbc14.2.0.3的问题。。。项目很大,存储过程需要ojdbc14这个包
- oracle过程被锁如何解决?急死人了数据库又不能随便的重启,就不知道怎么办了?
下面给一个例子,可参照处理
第一类:如果K_NAME项目固定,使用DEOCDE函数
with test as(
select 3 USER_ID,'背景知识' K_NAME, 4.5 SCORE from dual union all
select 3 USER_ID,'创新能力' K_NAME, 1.5 SCORE from dual union all
select 3 USER_ID,'服务意识' K_NAME, 1 SCORE from dual union all
select 3 USER_ID,'沟通能力' K_NAME, 1 SCORE from dual union all
select 4 USER_ID,'背景知识' K_NAME, 12 SCORE from dual union all
select 4 USER_ID,'创新能力' K_NAME, 1.5 SCORE from dual union all
select 4 USER_ID,'服务意识' K_NAME, 0.5 SCORE from dual union all
select 4 USER_ID,'沟通能力' K_NAME, 0.5 SCORE from dual)
SELECT USER_ID,
SUM(decode(K_NAME, '背景知识', SCORE)) "背景知识",
SUM(decode(K_NAME, '创新能力', SCORE)) "创新能力",
SUM(decode(K_NAME, '服务意识', SCORE)) "服务意识",
SUM(decode(K_NAME, '沟通能力', SCORE)) "沟通能力"
FROM test
GROUP BY USER_ID;
第二类:如果项数不固定,使用存储过程动态SQL拼接
表结构如下:
t_fl:
lb
----
a
b
c
d
e t_sj
id lb sl
-------------
1 a 10
1 c 30
1 d 40
1 e 50
2 b 20
2 e 50 想弄出这样一个结果:
id sl_a sl_b sl_c sl_d sl_e
---------------------------------
1 10 30 40 50
2 20 50 --1、如果t_fl表行数据不定的话可以写一个存储过程
CREATE OR REPLACE PROCEDURE row2col(o OUT SYS_REFCURSOR) IS
sqlstr VARCHAR2(4000) := '';
BEGIN
FOR cc IN (SELECT lb FROM t_fl) LOOP
sqlstr := sqlstr || 'sum(decode(lb,''' || cc.lb ||''',sl)) as "sl_'
|| cc.lb || '",';
END LOOP;
sqlstr := 'select id,' || rtrim(sqlstr,',') || ' from t_sj group by id';
OPEN o FOR sqlstr;
END row2col;
10G的看楼上的帖子