根据子类和父类别选择列

时间:2014-09-01 10:48:03

标签: sql sql-server sql-server-2008 tsql

我有一个SQL Server 2008数据库。我有一个具有以下结构的表

CatID  ParentCatID  NAME   Level   
1        NULL        A       1
2         1          B       2
3         2          C       3  
4        NULL        D       1
5         4          E       2
6         5          F       3
7        NULL        G       1 
8         7          H       2

我想以Heirarchical格式选择Name列,如下所示:

Level1   Level2   Level3
  A        B        C
  D        E        F  

在我的表中,所有level1类别都有level2子级。同样,所有2级儿童都有3级儿童。那么我怎样才能以我想要的格式获取数据。

1 个答案:

答案 0 :(得分:2)

这是一个简单的查询:

select 
   C1.NAME as Level1, 
   C2.NAME as Level2,
   C3.NAME as Level3
from Categories C1
inner join Categories C2
   on C2.ParentCatId = C1.CatId
inner join Categories C3
   on C3.ParentCatId = C2.CatId
where C1.Level = 1 and C2.Level = 2 and C3.Level = 3 and