简体   繁体   English

SQL 服务器显示在父子级别显示产品的视图

[英]SQL Server to display a view to show products at parent and child level

I have a table like this:我有一张这样的桌子:

+----+----------+----------+-----------+
| ID |   Name   | Is_Group | Parent_id |
+----+----------+----------+-----------+  
|  1 | Clothes  |        1 | Null      |  
|  2 | Food     |        1 | Null      |  
|  3 | fastfood |        1 | 2         |  
|  4 | T-shirt  |        0 | 1         |
|  5 | skirt    |        0 | 1         |
|  6 | pizza    |        0 | 3         |
|  7 | snack    |        0 | 3         |
+----+----------+----------+-----------+

I would like to have a horizontal representation to use for reporting such as:我想要一个用于报告的水平表示,例如:

+----+---------+---------+----------+
| ID |  Name   | level1  |  level2  |
+----+---------+---------+----------+
|  4 | T-shirt | Clothes | Null     |
|  5 | skirt   | Clothes | Null     |
|  6 | pizza   | Food    | fastfood |
|  7 | snack   | Food    | fastfood |
+----+---------+---------+----------+

Would anyone know how to do this?有人知道该怎么做吗?

You can use two levels of left join :您可以使用两个级别的left join

select t.*,
       coalesce(tpp.name, tp.name) as level1,
       (case when tpp.name is not null then tp.name end) as level2
from t left join
     t tp
     on t.parent_id = tp.id left join
     t tpp
     on tp.parent_id = tpp.parent_id
where not exists (select 1
                  from t tc
                  where tc.parent_id = t.id);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM