Guest User

Untitled

a guest
Nov 19th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. SELECT
  2. LPAD(' ', (level - 1) * 2) || t.name AS "Name"
  3. FROM (
  4. select NULL, c_id, par_id, name from category
  5. union all
  6. select g_id, NULL, cat_id, name from goods
  7. ) t
  8. LEFT JOIN moves m ON m.goods_id=t.g_id
  9. CONNECT BY PRIOR t.cat_id=t.par_id
  10. START WITH t.par_id IS NULL
  11. ORDER SIBLINGS BY t.name;
  12.  
  13. LEFT JOIN
  14. (
  15. SELECT
  16. SUM(price), goods_id
  17. FROM moves
  18. GROUP BY goods_id
  19. ) x
  20. ON t.g_id=x.goods_id
  21.  
  22. WITH CTE as(
  23. SELECT LPAD(' ', (level - 1) * 2) || name name, price, rownum RN,
  24. sys_connect_by_path(name,'/') path
  25. FROM (
  26. select id, par_id, name, NULL price from category
  27. union all
  28. select NULL, cat_id, name, num from goods
  29. ) X
  30. CONNECT BY PRIOR id=par_id
  31. START WITH par_id IS NULL
  32. ORDER SIBLINGS BY X.name
  33. )
  34. select name,
  35. coalesce(price, (select sum(price) from CTE B where B.path like A.path||'/%' )) price
  36. from CTE A order by RN
Add Comment
Please, Sign In to add comment