私はこの手続きをしており、与えられた日付と他のほとんどの入力に基づいてレコードを返すべきです。まず、branch_IDをtempテーブルの@branchesに配置し、そのbranch_IDをtempテーブルから選択しますが、選択されたものだけでなく、すべてのブランチのレコードを返します。どうして ?しかし、静的な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