一道sql题(附图)(在线等) 本帖最后由 xjswuai 于 2009-11-12 14:08:45 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 大概知道什么意思了同一个so_nbr中的三个so_charge_type_id不会重复吧?先将主表行转列,再关联其他两表但是a表中同一个so_nbr中,哪条记录对应b表,哪条对应c表,应该有标识吧是通过seq吗,还是仅仅通过长度 主表so_nbr与seq是联合主键我想取b表的newid与c表的charge_id就得通过主表的so_charge_type_id来取。 那b表的newid与c表的charge_id与最终的效果图里的一列相对应?还是与两列相对应?说说最终效果图中列的对应关系啊 关键是这个关联是怎么个对应法一个so_nbr对应几个new_id和changeid是一个so_nbr其中seq满足条件的和b表关联,满足别的条件的和c表关联还是所有记录都与b表和c表一一关联说不清楚的话,可以弄些具有代表性的实例数据来说明一下列出原来的数据和你要的结果上面的图只能看出表结构而不能看出有何联系,及最终效果从何而来 刚搞明白。意思是这样的。效果表里面的so_nbr字段有3个相同的值20090010010000020300,但它与seq是联合主键。对应的seq值是2,3,4效果表里的charge_id是从c表的charge_id取出,效果表里的payment_type_id是从b表newid取出他们都是从主表里so_charge_type_id来获得。 99999 99993 519其中5位长的与b表关联来获得newid 3位长的与c表关联获得charge_id意思就是这样,如果对应不上就用空来代替,最后分别插入到效果表里的charge字段与payment_type_id上各位大侠给看看吧··· ...如果你自己都不明白,是不能让我们明白的还是一个要求,给一组实例数据,以及这组数据的查询结果你这个回答不能够说明问题:“不知道怎么才能把3个so_charge_type_id给分开进行查询中间表”这个分开是怎么回事及怎么处理结果 15:18:33 scott@TUNGKONG> select * from a;SO_NBR A SO_CH SEQ--------------- - ----- ----------200153000511 1 519 0200153000511 1 99999 1200153000511 1 99993 2已用时间: 00: 00: 00.0015:18:36 scott@TUNGKONG> select * from b;SO_CH NEW----- ---99999 199992 299996 3已用时间: 00: 00: 00.0015:18:40 scott@TUNGKONG> select * from c;SO_CH CHARGE_ID----- ----------519 1000107104 1000102103 100520已用时间: 00: 00: 00.0015:18:45 scott@TUNGKONG> select so_nbr,seq,decode(length(a.so_charge_type_id),3,id) "charge_id",decode(length(a.so_charge_type_id),5,id) "payment_type_id" from a,15:18:58 2 (select so_charge_type_id,newid id from b union all select so_charge_type_id,charge_id from c) b15:18:58 3 where a.so_charge_type_id = b.so_charge_type_id(+)15:18:58 4 order by 1,2;SO_NBR SEQ charge_id payment_ty--------------- ---------- ---------- ----------200153000511 0 1000107200153000511 1 1200153000511 2已用时间: 00: 00: 00.03 求sql语句,各位高手给看看! oracle9201 升级9208问题 请问如何用命令来运行Oracle带参数的存储过程 oracle 怎么导入SqlServer数据 请问一个sql查询问题? 一个触发器问题,高分求解 DUAL,问题1 sql问题 各位高手救救我!如果没有办法解决问题我就要下岗 Linux redhat6.9 安装oracle11g liusong_china 进~~~来解释你写的sql 一道sql题
同一个so_nbr中的三个so_charge_type_id不会重复吧?
先将主表行转列,再关联其他两表
但是a表中同一个so_nbr中,哪条记录对应b表,哪条对应c表,应该有标识吧
是通过seq吗,还是仅仅通过长度
那b表的newid与c表的charge_id与最终的效果图里的一列相对应?还是与两列相对应?
说说最终效果图中列的对应关系啊
一个so_nbr对应几个new_id和changeid
是一个so_nbr其中seq满足条件的和b表关联,满足别的条件的和c表关联
还是所有记录都与b表和c表一一关联说不清楚的话,可以弄些具有代表性的实例数据来说明一下
列出原来的数据和你要的结果上面的图只能看出表结构而不能看出有何联系,及最终效果从何而来
意思是这样的。
效果表里面的so_nbr字段有3个相同的值20090010010000020300,但它与seq是联合主键。对应的seq值是2,3,4
效果表里的charge_id是从c表的charge_id取出,效果表里的payment_type_id是从b表newid取出他们都是从主表里so_charge_type_id来获得。 99999 99993 519
其中5位长的与b表关联来获得newid
3位长的与c表关联获得charge_id意思就是这样,如果对应不上就用空来代替,最后分别插入到效果表里的charge字段与payment_type_id上
各位大侠给看看吧···
还是一个要求,给一组实例数据,以及这组数据的查询结果
你这个回答不能够说明问题:
“不知道怎么才能把3个so_charge_type_id给分开进行查询中间表”这个分开是怎么回事
及怎么处理结果
15:18:33 scott@TUNGKONG> select * from a;SO_NBR A SO_CH SEQ
--------------- - ----- ----------
200153000511 1 519 0
200153000511 1 99999 1
200153000511 1 99993 2已用时间: 00: 00: 00.00
15:18:36 scott@TUNGKONG> select * from b;SO_CH NEW
----- ---
99999 1
99992 2
99996 3已用时间: 00: 00: 00.00
15:18:40 scott@TUNGKONG> select * from c;SO_CH CHARGE_ID
----- ----------
519 1000107
104 1000102
103 100520已用时间: 00: 00: 00.00
15:18:45 scott@TUNGKONG> select so_nbr,seq,decode(length(a.so_charge_type_id),3,id) "charge_id",decode(length(a.so_charge_type_id),5,id) "payment_type_id" from a,
15:18:58 2 (select so_charge_type_id,newid id from b union all select so_charge_type_id,charge_id from c) b
15:18:58 3 where a.so_charge_type_id = b.so_charge_type_id(+)
15:18:58 4 order by 1,2;SO_NBR SEQ charge_id payment_ty
--------------- ---------- ---------- ----------
200153000511 0 1000107
200153000511 1 1
200153000511 2已用时间: 00: 00: 00.03