簡體   English   中英

SQL 在 where 子句上使用別名的服務器內部連接子查詢

[英]SQL Server inner join subquery with alias on where clause

當被要求這樣做時,我認為這會很容易,但它一直在困擾着我。 我想使用先前連接的值應用於后續連接子查詢的 where 子句。 現在我已經硬編碼了一個值,但顯然不能保持這樣。 到目前為止,這是我所擁有的;

select
       SU.SUName
     , Q.[Name] AS [QualName]
     , DSP.EmployeeID AS [EmployeeID]
     , E.FirstName + ' ' + E.LastName AS [FullName]
  from SchedulingUnit            AS SU
 inner join StaffingProfile      AS SP  on SU.UnitID = SP.UnitID
 inner join DailyStaffingProfile AS DSP on SP.ID = DSP.ID
 inner join (SELECT QualID, [Name] FROM Qualifications WHERE QualID = **56**
              UNION
             SELECT BaseQualificationID, [Name]
               from QualificationDependencies AS QD
              inner join Qualifications AS Q ON Q.QualID = QD.QualifiesForID
              WHERE QualifiesForID IN (SELECT QualID FROM Qualifications WHERE QualID = **56** )) 
                                  AS Q ON SP.QualID = Q.QualID
 inner join Employee             AS E   on DSP.EmployeeID = E.EmpID
 where (@UnitID IS NULL OR SU.UnitID = @UnitID)
   and SU.HideInList = 0
   and NOT EXISTS (select * from EQ where EmpID = E.EmpID and SP.QualID = EQ.QualID)

我想用 SP.QualID 替換 56 的 2 個實例...這可能嗎?

您不需要將SP.QualID放在子查詢中。 子查詢后的SP.QualID = Q.QualID已經做了你想要的。 只需刪除子查詢中的兩個WHERE QualID = 56

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM