我有一个包含一些数据的表格,如下所示
身份证 | 标题 | 类别 -- ----- -------- 1 豆类食品 2 比萨食品 3 SQL 书 4 阿凡达电影 5 甲骨文书
我想以根节点为类别的树的形式组织这种表数据。
食物 豆子 比萨 书 SQL 甲骨文 电影 阿凡达
你能建议一个分层查询吗?我尝试了一些,但无法获得预期的结果。
更新 真实精神
在这里设置一个小提琴,如果你想试试
这可能是一种解决方案
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;
试试这个查询:
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