首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

这个sql语句如何写

2012-02-16 
这个sql语句怎么写?有这两个表Asidbyamount(金额)yyyymm(月份)LSA080013050.00200706LSA08001520200707LSA

这个sql语句怎么写?
有这两个表
A
sid                         byamount(金额)                             yyyymm(月份)
LSA08001                 3050.00                                               200706
LSA08001                 520                                                       200707
LSA08001               420                                                         200708
LSB05001               230                                                         200706
LSB05001               450                                                         200707
LSB05001               620                                                         200708
LSC05001               720                                                         200706
LSC05001               1500                                                       200707
LSC05001               600                                                         200708
LSD08001                 320                                                       200705
............

sid                     parentid(上线)            
LSC05001           LSC05001
LSB05001           LSC05001
LSA08001           LSB05001
LSD08001           LSA08001
............
上线包含下线,现在要统计上线LS05001三个月的业绩该怎么统计,因为下线有可能是别的上线,这个是无穷尽的

[解决办法]
能否再说清楚点??
[解决办法]
select sum(t1.byamount)
from t1,(select t2.sid from t2 start with t2.sid= 'LS05001 '


connect by prior t2.sid=t2.parentid)t3
where t1.sid = t3.sid
and to_date(yyyymm|| '10 ', 'YYYYMMDD ') between ? and ?

两个问号代表时间段
[解决办法]
manyroads(一个巴掌照样拍响)的SQL很好,不过有点小问题,从测试数据中发现:sid 和 parentid 有可能相等, 如:
sid parentid(上线)
LSC05001 LSC05001
如果这样,必须把这种数据特殊处理。

可以参考下面的SQL语句:
select sum(t1.byamount)
from t1
where 月份条件
and ( sid = 'LSC05001 ' or
sid in
(select t3.sid from (select * from t2 where sid <> parentid) t3
start with t3.sid= 'LSC05001 ' connect by prior t3.sid=t3.parentid ));

说明一下:
1。关于求三个月的业绩,这个条件根据需求你可以自己写。
2。sid包括自己本身和所有的下线,所以用OR的关系。
3。用in效率不高,但是比较清晰,你可以适当改写成类似manyroads(一个巴掌照样拍响)的SQL。

热点排行