2

我有一个包含一些数据的表格,如下所示

身份证 | 标题 | 类别
 -- ----- --------
  1 豆类食品
  2 比萨食品
  3 SQL 书
  4 阿凡达电影
  5 甲骨文书

我想以根节点为类别的树的形式组织这种表数据。

食物
  豆子
  比萨
书
  SQL
  甲骨文
电影
  阿凡达

你能建议一个分层查询吗?我尝试了一些,但无法获得预期的结果。

更新 真实精神

在这里设置一个小提琴,如果你想试试

4

2 回答 2

3

这可能是一种解决方案

with tab as (select distinct category title, null parent from test
          union all 
         select title, category from test)
select lpad(' ', (level * 2 - 1), '-' ) ||  title as title
  from tab
  start with parent is null
connect by prior title = parent;

SqlFiddle

于 2014-05-09T10:42:03.027 回答
2

试试这个查询:

SELECT CASE
  WHEN title IS NULL THEN category
  ELSE '- ' || title
END category_title
FROM (
  SELECT title, category FROM table
  union all
  SELECT DISTINCT NULL title, category from table
) t
ORDER BY category, title NULLS FIRST
于 2014-05-09T10:45:14.363 回答