我有这个存储过程,我需要检查@DateChk == 1,然后我想在SP中的SQL语句中添加WHERE子句。如果为0,则不应该有任何WHERE子句。
我如何编写这样的功能?在一个程序中,我可以在字符串中构建传递给服务器,但我还没有找到任何方法在SQL服务器中执行此操作。
SELECT dateDay, SUM(nok) as NOK, SUM(ok) as OK, (SUM(ok) + SUM(nok)) as 'Total'
FROM #st
SELECT CASE @DateChk
WHEN 1: WHERE dateDay BETWEEN '2016-08-01' AND '2016-08-31'
像这样,如果@DateChk = 1,应该添加WHERE,否则获取所有记录。
答案 0 :(得分:3)
您可以像这样修改您的条件:
SELECT dateDay, SUM(nok) as NOK, SUM(ok) as OK, (SUM(ok) + SUM(nok)) as 'Total'
FROM #st
WHERE
(@DateChk = 1 and (dateDay BETWEEN '2016-08-01' AND '2016-08-31'))
or @DateChk = 0
它将完全符合您的预期行为:dateDay
上的条件仅在@DateChk = 1
时适用。