订单历史表:
OrderA 字段有:
订单编号,订单金额
DD-0001 2500
订单明细表
OrderB 字段有:
订单编号,产品名称,产品数量
DD-0001 ,钢笔 ,2
DD-0001 ,书 ,1
DD-0001 ,纸 ,10现在要求达到这样的效果:
一条SQL语句实现订单编号,订单金额,订单产品以数量
DD-0001 ,2500 ,钢笔*2;书*1;纸*10字段之间我是用逗号分隔求SQL语句,本来实现想不出来,请老鸟出招!!!!
OrderA 字段有:
订单编号,订单金额
DD-0001 2500
订单明细表
OrderB 字段有:
订单编号,产品名称,产品数量
DD-0001 ,钢笔 ,2
DD-0001 ,书 ,1
DD-0001 ,纸 ,10现在要求达到这样的效果:
一条SQL语句实现订单编号,订单金额,订单产品以数量
DD-0001 ,2500 ,钢笔*2;书*1;纸*10字段之间我是用逗号分隔求SQL语句,本来实现想不出来,请老鸟出招!!!!
解决方案 »
- .dat文件怎样导入oracle数据库???
- 无效id的问题。
- sqlplus -s $userid <<! 是什么意思
- 备份弹出ora-01031:insufficient privileges 错怎么解决?
- 急。。救命呀~OEM登录的时候出现ORA-12154:TNS:无法解析指定的连接标识符,命令行lsnrctl status的时候监听参数文件也不是想要的路径
- 存储过程中一个拼接的sql语句,超长了不能执行怎么办。。。
- EXP-IMP問題,老問題還是解決不了.
- autocommit到底有什么用
- 简单问题(substring)
- 一个简单的问题
- 请教一条有点难度的SQL语句!
- ORACLE數據庫中表已經存在且有記錄﹐我要修改結構(通過SQL語句)...
http://blog.csdn.net/kinglht
select 'DD-0001','2500' from dual;
create table orderItem(orderNo varchar2(10),productName varchar2(30),productNum int);
insert into orderItem
select 'DD-0001','钢笔','2' from dual
union all
select 'DD-0001','书','1' from dual
union all
select 'DD-0001','纸','10' from dual;
select b.orderNo,c.orderNum , max(substr((sys_connect_by_path(productName||'*'||productNum,',')),2)) as "订单产品乘以数量"
from (
select a.orderNo,productName,productNum,orderNum,
rownum rnum,
row_number() over(partition by a.orderNo order by a.orderNo) rn1
from orderItem a ,orderA
) b,orderA c
start with rn1=1
connect by rnum-1=prior rnum
group by b.orderNo,c.orderNum
;
测试结果:
订单编号 订单金额 订单产品以数量
DD-0001 2500 钢笔*2;书*1;纸*10
楼主试试