2015-10-14 57 views
1

我有一个存储过程包含一个简单的查询,如下所示。该查询会拉下在工作中提交的所有出价。TSQL有条件的地方基于另一个表

但是,我需要在WHERE子句中增加一个附加部分。

还有第二个表,名为Admins,表中的字段employeeID。如果传递给存储过程的员工标识存在于Admins中,它将降低所有出价。如果它们不存在于Admins中,则只会降低出价b.actor = @employee

总之,如果存在Admin@employee,离开where子句它是如何(拉下来的RequestID的所有信息。但是,如果他们没有在该表中,需要在AND b.actor = @employee

SELECT b.bidID , 
     b.requestID , 
     b.notes , 
     b.team , 
     b.devDays , 
     b.complexity , 
     b.estimatedCost , 
     b.actor , 
     b.status, 
     REPLACE(CONVERT (VARCHAR (20), b.timestamp, 106), ' ', '-') AS timestamp, 
     e.PreferredName AS bidderFirstName, 
     e.LastName AS bidderLastName, 
     e.NTID AS bidderNTID 
FROM dbo.BS_ToolRequests_Bids AS b 
LEFT OUTER JOIN dbo.EmployeeTable AS e 
ON b.actor = e.QID 
WHERE b.requestID = t.requestID 
FOR XML PATH ('data'), TYPE, ELEMENTS, ROOT ('bids') 

添加我怎么能去这样做?上面的代码是一个子选择在一个较大的查询,但需要某种类型的条件添加到它。

回答

2

你可以添加一个OR子句现有WHERE条款?

WHERE 
    AND ( EXISTS(SELECT 'f' FROM Admins WHERE employeeid = @employeeid) 
     OR b.actor = @employeeid 
    ) 
+1

这实际上是完美的,不知道'存在'可以在'AND'部分中使用。很快就会接受。 – SBB

相关问题