我有一棵有活跃组织和不活跃组织的树,并且进行了搜索。
如果您选择一个不活跃的组织,那么您只会在树中看到不活跃的组织。
如果我有一个不活跃的组织(子级)(子级)(子级),我如何显示一个不活跃的组织的子组织
WITH h$cte AS
(
SELECT
ORGANIZATIONS.ORGANIZATION_ID ,
ORGANIZATIONS.PARENT_ID ,
ORGANIZATIONS.TITLE ,
ORGANIZATIONS.ARABIC_TITLE ,
ORGANIZATION_TYPES.ORGANIZATION_TYPE_ID ,
ORGANIZATION_TYPES.TITLE AS TITLE$2 ,
ORGANIZATION_TYPES.ARABIC_TITLE AS ARABIC_TITLE$2 ,
ORGANIZATIONS.IS_ACTIVE ,
1 Level ,
CASE WHEN @pLANGUAGE = 0
THEN CAST ('/' + ORGANIZATIONS.TITLE AS NVARCHAR(MAX))
ELSE CAST ('/' + ORGANIZATIONS.ARABIC_TITLE AS NVARCHAR(MAX))
END sort_path
FROM
ERP.ORGANIZATIONS
INNER JOIN
ERP.ORGANIZATION_TYPES ON ORGANIZATIONS.ORGANIZATION_TYPE_ID = ORGANIZATION_TYPES.ORGANIZATION_TYPE_ID
WHERE
ORGANIZATIONS.PARENT_ID IS NULL
UNION ALL
SELECT
ORGANIZATIONS.ORGANIZATION_ID ,
ORGANIZATIONS.PARENT_ID ,
ORGANIZATIONS.TITLE ,
ORGANIZATIONS.ARABIC_TITLE ,
ORGANIZATION_TYPES.ORGANIZATION_TYPE_ID ,
ORGANIZATION_TYPES.TITLE AS TITLE$2 ,
ORGANIZATION_TYPES.ARABIC_TITLE AS ARABIC_TITLE$2 ,
ORGANIZATIONS.IS_ACTIVE ,
h$cte.Level + 1 Level ,
CASE WHEN @pLANGUAGE = 0
THEN CAST (h$cte.sort_path + '/' + ORGANIZATIONS.TITLE AS NVARCHAR(MAX))
ELSE CAST (h$cte.sort_path + '/' + ORGANIZATIONS.ARABIC_TITLE AS NVARCHAR(MAX))
END sort_path
FROM
ERP.ORGANIZATIONS
INNER JOIN
ERP.ORGANIZATION_TYPES ON ORGANIZATIONS.ORGANIZATION_TYPE_ID = ORGANIZATION_TYPES.ORGANIZATION_TYPE_ID
,h$cte
WHERE
h$cte.ORGANIZATION_ID = ORGANIZATIONS.PARENT_ID
)
SELECT
h$cte.ORGANIZATION_ID,
ISNULL(h$cte.PARENT_ID, -1) AS PARENT_ID,
h$cte.TITLE ,
h$cte.ARABIC_TITLE ,
h$cte.TITLE ORGANIZATION_TYPE ,
h$cte.ARABIC_TITLE ARABIC_ORGANIZATION_TYPE ,
Level ,
ERP.EF_ORGANIZATION_ISPARENT(h$cte.ORGANIZATION_ID) AS is_parent ,
h$cte.IS_ACTIVE ,
ISNULL(ORGANIZATIONS_OWNERS.ORGANIZATION_OWNER_ID, -1) AS ORGANIZATION_OWNER_ID ,
ISNULL(ASSIGNMENTS.ASSIGNMENT_ID, -1) AS ASSIGNMENT_ID ,
HRMS.FN_GETFORMATTEDARABPEOPLENAME(ASSIGNMENTS.PERSON_ID, GETDATE()) AS OWNER_ARABIC_TITLE ,
HRMS.FN_GETFORMATTEDPEOPLENAME(ASSIGNMENTS.PERSON_ID, GETDATE()) AS OWNER_TITLE ,
ISNULL(TAKLEEF.START_DATE,ISNULL(ORGANIZATIONS_OWNERS.EFFECTIVE_START_DATE, GETDATE())) AS EFFECTIVE_START_DATE ,
ISNULL(TAKLEEF.END_DATE,ISNULL(ORGANIZATIONS_OWNERS.EFFECTIVE_END_DATE, GETDATE())) AS EFFECTIVE_END_DATE
FROM
h$cte
LEFT OUTER JOIN
HRMS.ORGANIZATIONS_OWNERS ON h$cte.ORGANIZATION_ID = ORGANIZATIONS_OWNERS.ORGANIZATION_ID
AND ORGANIZATIONS_OWNERS.EFFECTIVE_END_DATE IS NULL
LEFT OUTER JOIN
HRMS.TAKLEEF ON [h$cte].ORGANIZATION_ID = TAKLEEF.DEPARTMENT_ID
AND Takleef.IS_DEPARTMENT_OWNER = 1
AND GETDATE() BETWEEN START_DATE AND ISNULL(END_DATE, GETDATE())
LEFT OUTER JOIN
HRMS.ASSIGNMENTS ON ISNULL(TAKLEEF.ASSIGNMENT_ID, ORGANIZATIONS_OWNERS.ASSIGNMENT_ID) = ASSIGNMENTS.ASSIGNMENT_ID
ORDER BY
sort_path;