Sql 为什么我的查询没有显示正确的结果? 我有很多表,但是例如,让我们考虑2个表,即雇员和文件条目。我从两个表EmployeeID、FileStatus、FileName、EmployeeName中选择这些字段。 这两个表都有一个公共字段,即EmployeeID。即使EmployeeID不在Employees表中,文件条目也可以存在。所以我想从这两个表中选择所有记录,但如果新字段不在Employees表中,则应显示“NotRegistered” ) @EmployeeID int ) Alter PROCEDURE [dbo].[Modify_RejectedFiles] -- '2015-01-06 07:41:00', '2015-01-06 07:41:00',1,3,'','20001018783815' ( @FromDate SMALLDATETIME, @ToDate SMALLDATETIME, @OfficeID INT=0, --it represents id of a company/branch/organization being logged in @Type INT=0, --it represents type of a user being logged in i.e. 1=orgranization, 2=company, 3=branch @EmployerUniqueID VARCHAR(15)='', @EmployeeUniqueID VARCHAR(15)='' ) AS BEGIN DECLARE @Branches TABLE ( BranchID INT ) IF @Type = 1 --Organization BEGIN INSERT INTO @Branches SELECT BranchID From vw_OrganizationTree WHERE OrganizationID = @OfficeID --inserts 3 always because we got only 1 organization i.e. 3 END IF @Type = 2 --Company BEGIN INSERT INTO @Branches SELECT BranchID From vw_OrganizationTree WHERE CompanyID = @OfficeID --inserts 3 always because we got only 1 company i.e. 3 END IF @Type = 3 -- i.e. Branch BEGIN INSERT INTO @Branches SELECT BranchID From vw_OrganizationTree WHERE BranchID = @OfficeID END Declare @IsRegistered varchar(20)= 'Registered' If ((Select count(*) from RegisteredEmployees where EmployeeUniqueID= @EmployeeUniqueID) <1) Begin Set @IsRegistered = 'Not Yet' End Select distinct FE.EmployeeUniqueID, RE.EmployeeName, Empr.EmployerName, Br.BranchName, FE.IsRejected, FE.RejectedFileCreationDateTime From File_EDREntries FE left Join RegisteredEmployees RE ON FE.EmployeeUniqueID = RE.EmployeeUniqueID left Join Employers Empr ON RE.Employer_ID = Empr.ID left Join Branches Br ON Br.BranchID = Empr.Branch_ID WHERE FE.IsRejected = 1 --20017128203780 AND Empr.Branch_ID in (Select BranchID from @Branches)

Sql 为什么我的查询没有显示正确的结果? 我有很多表,但是例如,让我们考虑2个表,即雇员和文件条目。我从两个表EmployeeID、FileStatus、FileName、EmployeeName中选择这些字段。 这两个表都有一个公共字段,即EmployeeID。即使EmployeeID不在Employees表中,文件条目也可以存在。所以我想从这两个表中选择所有记录,但如果新字段不在Employees表中,则应显示“NotRegistered” ) @EmployeeID int ) Alter PROCEDURE [dbo].[Modify_RejectedFiles] -- '2015-01-06 07:41:00', '2015-01-06 07:41:00',1,3,'','20001018783815' ( @FromDate SMALLDATETIME, @ToDate SMALLDATETIME, @OfficeID INT=0, --it represents id of a company/branch/organization being logged in @Type INT=0, --it represents type of a user being logged in i.e. 1=orgranization, 2=company, 3=branch @EmployerUniqueID VARCHAR(15)='', @EmployeeUniqueID VARCHAR(15)='' ) AS BEGIN DECLARE @Branches TABLE ( BranchID INT ) IF @Type = 1 --Organization BEGIN INSERT INTO @Branches SELECT BranchID From vw_OrganizationTree WHERE OrganizationID = @OfficeID --inserts 3 always because we got only 1 organization i.e. 3 END IF @Type = 2 --Company BEGIN INSERT INTO @Branches SELECT BranchID From vw_OrganizationTree WHERE CompanyID = @OfficeID --inserts 3 always because we got only 1 company i.e. 3 END IF @Type = 3 -- i.e. Branch BEGIN INSERT INTO @Branches SELECT BranchID From vw_OrganizationTree WHERE BranchID = @OfficeID END Declare @IsRegistered varchar(20)= 'Registered' If ((Select count(*) from RegisteredEmployees where EmployeeUniqueID= @EmployeeUniqueID) <1) Begin Set @IsRegistered = 'Not Yet' End Select distinct FE.EmployeeUniqueID, RE.EmployeeName, Empr.EmployerName, Br.BranchName, FE.IsRejected, FE.RejectedFileCreationDateTime From File_EDREntries FE left Join RegisteredEmployees RE ON FE.EmployeeUniqueID = RE.EmployeeUniqueID left Join Employers Empr ON RE.Employer_ID = Empr.ID left Join Branches Br ON Br.BranchID = Empr.Branch_ID WHERE FE.IsRejected = 1 --20017128203780 AND Empr.Branch_ID in (Select BranchID from @Branches),sql,tsql,Sql,Tsql,用例当RE.EmployeeUniqueID为null时,则“尚未”或“已注册”在最终选择查询中结束那么问题出在哪里?是否有任何错误?您的问题使用的名称与代码Employees表=RegisteredEmployees?中的名称不同并没有帮助?。您是在问如何使空的EmployeeName显示为“NotRegistered”吗?

用例当RE.EmployeeUniqueID为null时,则“尚未”或“已注册”在最终选择查询中结束

那么问题出在哪里?是否有任何错误?您的问题使用的名称与代码Employees表=RegisteredEmployees?中的名称不同并没有帮助?。您是在问如何使空的EmployeeName显示为“NotRegistered”吗?