【问题标题】:conditional where clause in sql 2012sql 2012中的条件where子句
【发布时间】:2014-11-01 06:45:00
【问题描述】:
我的存储过程中有如下查询:
我在我的代码后面设置了@SUBCONDITION。
declare @SUBCONDITION VARCHAR(100)= NULL
if(@SUBCONDITION='DEPT')
BEGIN
Select * from table1 where IDDEPT=1
END
ELSE IF (@SUBCONTION='GRADE')
BEGIN
SELECT * FROM TABLE1 WHERE IDGRADE=1
END
ELSE IF(@SUBCONDITION='SECTION')
BEGIN
SELECT * FROM TABLE1 WHERE IDSECTION=1
END
一切正常。
我的问题是我是否可以在一个查询中做到这一点???喜欢在 where 子句中使用 if 或 case 之类的吗?
【问题讨论】:
标签:
sql
sql-server
select
conditional
where-clause
【解决方案1】:
试试这个:
SELECT *
FROM table1
WHERE 1 = (CASE @SUBCONDITION
WHEN 'DEPT' THEN IDDEPT
WHEN 'GRADE' THEN IDGRADE
WHEN 'SECTION' THEN IDSECTION
ELSE 0
END);
【解决方案2】:
是的,您可以在一个查询中完成此操作。它看起来像这样:
Select *
from table1
where (@SUBCONDITION = 'DEPT' and IDDEPT = 1) or
(@SUBCONTION = 'GRADE') and IDGRADE = 1) or
(@SUBCONDITION = 'SECTION' and IDSECTION = 1)
【解决方案3】:
试试这个:
Select * from table1
where @SUBCONDITION = 'DEPT' AND IDDEPT=1 OR
@SUBCONDITION = 'GRADE' AND IDGRADE=1
@SUBCONDITION = 'SECTION' AND IDSECTION=1