Я пытаюсь получить записи родительского отдела, если таковые существуют, из представления PayrollView
, а также дочерние отделы предоставили DepartmentSecurityMode=2
. Строки фильтруются по родительскому идентификатору отдела. Это то, что я пытался, но это показывает мне ошибку
"Подзапрос возвратил более 1 значения. Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения."
DECLARE @LoggedInUserId UNIQUEIDENTIFIER
= 'ff333441-bc4f-4f3d-b992-aad17baa9ebc'
DECLARE @LoggedInRoleId UNIQUEIDENTIFIER
= '2cb31771-7cbc-4f38-b558-804308d908c7'
DECLARE @DepartmentId UNIQUEIDENTIFIER
= '989fd98a-33ae-4ce1-8bbd-ed51ac46137d'
DECLARE @PeriodId UNIQUEIDENTIFIER = 'e7e52d21-90ad-4f2d-adc2-3f5399a032dd'
SELECT *
FROM PayrollView pv
INNER JOIN Departments d
ON pv.DepartmentId = d.SysId
CROSS JOIN AppRoles r
LEFT JOIN UserDepartmentView rd
ON d.SysId = rd.DepartmentId
AND rd.RoleId = @LoggedInRoleId
AND rd.UserId = @LoggedInUserId
WHERE PeriodId = @PeriodId
AND r.SysId = @LoggedInRoleId
AND
(
r.DepartmentSecurityMode = 2
AND D.SysId IN
(
(
SELECT SysId
FROM Departments ds
WHERE ds.ParentHierarchy LIKE
'%' + cast (@DepartmentId AS VARCHAR (50)) + '%'
)
,
--This is where I want to combine both the child as well the parent.
(
CASE
WHEN @DepartmentId = '00000000-0000-0000-0000-000000000000' THEN D.SysId
ELSE @DepartmentId
END
)
)
)
Любые предложения приветствуются.