【问题标题】: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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-30
          • 2013-09-08
          • 1970-01-01
          • 1970-01-01
          • 2011-05-28
          • 1970-01-01
          相关资源
          最近更新 更多