Login
Changes To SQLSnippets
Login

Changes to "SQLSnippets" between 2014-02-03 21:22:28 and 2014-02-03 21:42:21

130
131
132
133
134
135
136

137
138
139


140
141
142

143
144
145
146

147
148



149
150
151
152
153
154
155
156



157
158
159
160
161
162
163
130
131
132
133
134
135
136
137
138
139

140
141
142
143

144
145
146
147

148
149

150
151
152
153
154
155
156
157
158
159

160
161
162
163
164
165
166
167
168
169







+


-
+
+


-
+



-
+

-
+
+
+







-
+
+
+








<nowiki><pre>
with
DataSet(node,parent)
as
(
  select  'A', null union all
  select  'F', null union all
  select  'B', 'A' union all
  select  'C', 'B' union all
  select  'E', 'B' union all
  select  'E', 'F' union all
  select  'G', 'E' union all
  select  'D', 'C'
),
Hierarchy( node, parent, level, path )
Hierarchy( node, parent, level, path, isHead, isTail )
as
(
  select  DataSet.node,
          DataSet.parent,
          'NULL', -- DataSet.parent,
          1 as level,
          ' → ' || DataSet.node as path
          ' → ' || DataSet.node as path,
          DataSet.parent IS NULL,
          NOT EXISTS (SELECT 1 FROM DataSet d WHERE d.parent=DataSet.node)
  from     DataSet
  where    DataSet.parent is null

  union all
  select  DataSet.node,
          DataSet.parent,
          Hierarchy.level + 1 as level,
          Hierarchy.path || ' → ' || DataSet.node as path
          Hierarchy.path || ' → ' || DataSet.node as path,
          DataSet.parent IS NULL,
          NOT EXISTS (SELECT 1 FROM DataSet d WHERE d.parent=DataSet.node)
  from    Hierarchy
  join    DataSet
  on      DataSet.parent = Hierarchy.node
)
select    *
from      Hierarchy
order by  path;