Advertisement
Guest User

Untitled

a guest
Oct 27th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. WITH
  2. Tree(Id,Parent,Level) AS (
  3. SELECT
  4. Node_Id
  5. ,0
  6. ,0
  7. FROM CatalogOKPD WHERE Node_Parent_Id = 0
  8. UNION ALL
  9. SELECT
  10. okpd.Node_Id
  11. ,okpd.Node_Parent_Id
  12. ,t.Level+1
  13. FROM CatalogOKPD okpd
  14. JOIN Tree t ON t.Id = okpd.Node_Parent_Id)
  15. ,FullTree(Id,Child,Level,ChildLevel) AS (
  16. SELECT
  17. t1.Id
  18. ,t2.Id
  19. ,t1.Level
  20. ,t2.Level
  21. FROM Tree t1
  22. JOIN Tree t2 ON t1.Id=t2.Parent
  23. UNION ALL
  24. SELECT
  25. ft.Id
  26. ,t.Id
  27. ,ft.Level
  28. ,t.Level
  29. FROM Tree t
  30. JOIN FullTree ft ON t.Parent = ft.Child
  31. )
  32. SELECT * FROM FullTree
  33.  
  34. WITH
  35. Nums(N) AS (select 0 union select 1),
  36. Tree(id,Child,Level,ChildLevel,old_n) AS (
  37. SELECT Node_Id, Node_Id, 0, 0, 1
  38. FROM CatalogOKPD WHERE Node_Parent_Id = 0
  39. UNION ALL
  40. SELECT case when N=0 then t.id else okpd.Node_Id end,
  41. okpd.Node_Id, t.Level+N,
  42. t.ChildLevel+1, N
  43. FROM Tree t, CatalogOKPD okpd, Nums N
  44. WHERE t.Child = okpd.Node_Parent_Id and (old_n=1 or N=0)
  45. )
  46. select id, Child, Level, ChildLevel
  47. from Tree
  48. where ChildLevel>0 and old_n=0
  49. order by Level, id, ChildLevel
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement