带有案例陈述的复合Where子句 [英] Compound Where clause with Case Statements

查看:92
本文介绍了带有案例陈述的复合Where子句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在存储过程的where子句中使用可选语句。 SQL Server不喜欢第一个Case语句,在右括号和等号处用红线表示。第二个和第三个Case语句中的红线也是字段的别名值。到目前为止的代码是......



I am trying to use optional statements in the where clause of a stored procedure. SQL Server does not like the first Case statement with red line at closing parenthesis and equal sign. Also red line in second and third Case statement at alias values for fields. The code so far is...

SELECT c.[Contract], f.Area, dc.DeliverableCategory, d.DueDate, d.DueDateAdjusted, d.CompletedDate, d.PercentComplete, d.Comments

FROM tblDeliverables d LEFT JOIN
    CommonData.dbo.tblContracts c on c.ConID = d.Contract LEFT JOIN
    tblFunctionalAreas f ON f.FunID = d.FunID LEFT JOIN
    tblDeliverableCategories dc ON dc.DelCatID = d.DelCatID LEFT JOIN
    tblEmployeesResponsible e ON e.DelCatID = d.DelCatID

WHERE d.DueDate >= @Start AND d.DueDate <= @End AND
    CASE WHEN @ConID IS NOT NULL THEN (d.[Contract] = @ConID)
         WHEN @FunID IS NOT NULL THEN (d.FunID = @FunID)
         WHEN @EmpID IS NOT NULL THEN (e.EmpID = @EmpID) END

推荐答案





试试这个...



Hi,

Try this...

SELECT c.[Contract], f.Area, dc.DeliverableCategory, d.DueDate, d.DueDateAdjusted, d.CompletedDate, d.PercentComplete, d.Comments
 
	FROM tblDeliverables d LEFT JOIN
		CommonData.dbo.tblContracts c on c.ConID = d.Contract LEFT JOIN
		tblFunctionalAreas f ON f.FunID = d.FunID LEFT JOIN
		tblDeliverableCategories dc ON dc.DelCatID = d.DelCatID LEFT JOIN
		tblEmployeesResponsible e ON e.DelCatID = d.DelCatID
 
	WHERE d.DueDate >= @Start AND d.DueDate <= @End 
               AND d.[Contract] = CASE WHEN @ConID IS NOT NULL THEN  @ConID ELSE d.[Contract] END
               AND d.FunID = CASE WHEN @FunID IS NOT NULL THEN  @FunID ELSE d.FunID END
               AND e.EmpID = CASE WHEN @EmpID IS NOT NULL THEN  @EmpID ELSE e.EmpID END







希望这会对你有所帮助。





干杯




Hope this will help you.


Cheers


这篇关于带有案例陈述的复合Where子句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆