[英]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.