J'ai une table de nom de l'organisation avec la structure suivante donnée ci-dessous:Vue parent-enfant à partir d'une table auto-référencée (ID)? (. Pour les gourous TSQL)
CREATE TABLE [dbo].[DP_ORG_OrganizationUnit](
[GID] [uniqueidentifier] NULL,
[ID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[Code] [nvarchar](100) NULL,
[Name] [nvarchar](100) NULL,
[LastUpdated] [datetime] NULL,
[ManagedBy] [int] NULL, **SELF REFERENCING ID {For parent - child }***
[Manager] [int] NULL,
CONSTRAINT [PK_DP_ORG_OrganizationUnit] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
exigence est que je dois créer une vue qui va me donner un chemin complet pour chaque organisation unité.
ID CODE NAME MANAGEDBY MANAGER
1 HO Head Office 0
2 IT Information Technology 1
3. FI Finance 1
4. SP IT Support 2
5. M Mergers 3
J'ai besoin les données à venir comme
1. Head Office
2. Head Office/Information Technology
3. Head Office/Finance
4. Head Office/Information Technology/IT Support
5. Head Office/Finance/Mergers
Je veux tirer directement cela en une forme de critères d'un rapport afin que le peut sélectionner les sous-services d'un seul combo! Comment puis-je obtenir cela de TSQL (ms sql 2005). Merci d'avance pour toute solution.
Solution # 1:
with cteAnchor as (
select ID,CAST(Name as nvarchar(500)) as Name
from DP_ORG_OrganizationUnit
where ManagedBy = 21)
, cteRecursive as
(select ID,CAST(Name as nvarchar(500))as Name
from cteAnchor
union all
select t.ID,CAST(r.Name + '/' + t.Name AS nvarchar(500))
from DP_ORG_OrganizationUnit t
join cteRecursive r on t.ManagedBy = r.ID)
select * from cteRecursive;
i sorta obtenir l'image – abmv
@Remus - C'est SOOOOO cool! J'ai toujours dû gérer le tri et l'affichage, etc. au niveau de l'application. Merci un million! –