나는이 절차를 가지고 있으며 날짜를 알려주는 자료와 몇 가지 다른 자료를 바탕으로 기록을 반환해야한다. 먼저 branch_ID를 임시 테이블 @branches에 놓은 다음 temp 테이블에서 해당 branch_ID를 선택하지만 선택 된 테이블뿐만 아니라 모든 분기에 대한 레코드도 반환합니다. 왜 ? 하지만 정적 Branch_ID 즉 3을 입력하면 그 지점이 선택됩니다. where 조건이 올바르게 작동하지 않는 이유는 무엇입니까?
그리고
...
JOIN Statuses S ON S.StatusID = FE.Status_ID
where fe.IsRejected=1
AND EXISTS (
SELECT * FROM vw_OrganizationTree v
WHERE v.BranchID = e.BranchID AND
(@Type = 1 and v.OrganizationID = @OfficeID) or
(@Type = 2 and v.CompanyID = @OfficeID) or
(@Type = 3 and v.BranchID = @OfficeID)
)
JaydipJ는 이유를 암시로 왜 현재 코드 ISN '
ALTER PROCEDURE [dbo].[usp_RejectedFiles]
(
@FromDate SMALLDATETIME,
@ToDate SMALLDATETIME,
@OfficeID INT=0,
@Type INT=0
)
AS
BEGIN
DECLARE @Branches TABLE
(
BranchID INT
)
IF @Type = 1
BEGIN
INSERT INTO @Branches SELECT BranchID From vw_OrganizationTree WHERE OrganizationID = @OfficeID
END
IF @Type = 2
BEGIN
INSERT INTO @Branches SELECT BranchID From vw_OrganizationTree WHERE CompanyID = @OfficeID
END
IF @Type = 3
BEGIN
INSERT INTO @Branches SELECT BranchID From vw_OrganizationTree WHERE BranchID = @OfficeID
END
SELECT C.CompanyName,B.BranchName,E.EmployerName,FE.EmployeeUniqueID,pcr.EmployerUniqueID,
FE.IncomeFixedComponent,FE.IncomeVariableComponent,
S.StatusDescription, FE.IsRejected, FE.ID 'EdrID'
From File_EdrEntries FE JOIN PAFFiles pe ON pe.ID = FE.PAFFile_ID
inner join File_PCREntries pcr on pe.ID=pcr.PAFFile_ID
JOIN Employers E ON E.EmployerID = pcr.EmployerUniqueID
JOIN Branches B ON B.BranchID = E.Branch_ID JOIN companies C ON C.COMPANYID = B.COMPANY_ID
JOIN Statuses S ON S.StatusID = FE.Status_ID
where fe.IsRejected=1
AND E.Branch_id = (Select Branch_ID from @Branches)
END
샘플 데이터 및 테이블 정의를 게시해야합니다. – vercelli