如何输出到具有关系信息同表的同一行?

1 sql-server

这是我当前的 SQL Server 查询,几乎是我想要做的:

select "dokumentgruppe" + ', ' + convert(varchar(10), dokumentgruppenr) 
    + ', ' + 'Parent:' + convert(varchar(10), parentgruppenr) 
    as "Dokumentgruppe"
from "dbo"."dokumentgruppe"
where aktiv = '1'
order by "Dokumentgruppe"
Run Code Online (Sandbox Code Playgroud)

它给了我这个结果:

Budsjetter, 29, 家长:0
电子邮箱, 36, 家长:0
Fyllearrester, 40, 父母:38
Inngående, 42, 父母:36
JuksOgFanteri, 38, 家长:0
Legeattester, 39, 家长:38
林宁, 26, 家长:0
Periodiske regnskapsrapporter, 30, 家长:0
Permanente opplysninger, 23, 家长:0
Produksjon Fakturing, 33, 家长:0
Produksjon Lønn, 32, 家长:0
Produksjon Regnskap, 31, 家长:0

问题是,我想说明的实际名称Parentgruppe替代ParentgruppeID。该Parentgruppe具有一个ID和一个对应的姓名。

像这个例子:

Legeattester, 39, Parent:*JuksOgFanteri
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Sql*_*Zim 5

您可以通过将表与自身连接来获得此结果。

select c.dokumentgruppe 
    + ', ' + convert(varchar(10), c.dokumentgruppenr) 
    + ', ' + 'Parent:' + isnull(p.dokumentgruppe,'') 
    + ', ' + convert(varchar(10), c.parentgruppenr) 
    as Dokumentgruppe
from dbo.dokumentgruppe as c
  left join dbo.dokumentgruppe as p on c.parentgruppenr=p.dokumentgruppenr
where c.aktiv = '1'
order by c.Dokumentgruppe
Run Code Online (Sandbox Code Playgroud)

这是一个邻接列表风格的层次结构,你可以在这里找到对它们的很好的介绍:Sql Server Bible Sample Chapter 17: Traversing Hierarchies