Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT
- LPAD(' ', (level - 1) * 2) || t.name AS "Name"
- FROM (
- select NULL, c_id, par_id, name from category
- union all
- select g_id, NULL, cat_id, name from goods
- ) t
- LEFT JOIN moves m ON m.goods_id=t.g_id
- CONNECT BY PRIOR t.cat_id=t.par_id
- START WITH t.par_id IS NULL
- ORDER SIBLINGS BY t.name;
- LEFT JOIN
- (
- SELECT
- SUM(price), goods_id
- FROM moves
- GROUP BY goods_id
- ) x
- ON t.g_id=x.goods_id
- WITH CTE as(
- SELECT LPAD(' ', (level - 1) * 2) || name name, price, rownum RN,
- sys_connect_by_path(name,'/') path
- FROM (
- select id, par_id, name, NULL price from category
- union all
- select NULL, cat_id, name, num from goods
- ) X
- CONNECT BY PRIOR id=par_id
- START WITH par_id IS NULL
- ORDER SIBLINGS BY X.name
- )
- select name,
- coalesce(price, (select sum(price) from CTE B where B.path like A.path||'/%' )) price
- from CTE A order by RN
Add Comment
Please, Sign In to add comment