2014-09-01 120 views
1

我有一个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格式的名称列的表:

Level1 Level2 Level3 
    A  B  C 
    D  E  F 

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

+0

你只是去三个层次深?还是它需要无限深? (后者需要公用表表达式。) – 2014-09-01 10:59:36

+0

谢天谢地,它的深度只有3个级别 – MarsOne 2014-09-01 11:00:26

回答

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 
+0

不知何故,它会引发语法错误 – MarsOne 2014-09-01 11:02:40

+1

哎呀,我真傻!纠正。 – JotaBe 2014-09-01 11:08:35

+0

工作。你是男人 – MarsOne 2014-09-01 11:11:48