【问题标题】:Conditional WHERE clause to combine two queries用于组合两个查询的条件 WHERE 子句
【发布时间】:2014-05-29 17:35:25
【问题描述】:

我在 T-SQL 脚本中有一个大的 SELECT INTO 语句,目前我在 WHERE 子句中有两个单独的 SELECT INTO 仅相差一个 OR 条件。如果我的变量@cycle_nbr = 1 我让它做一个SELECT INTO,如果@cycle_nbr = 0 我让它做另一个SELECT INTO

我想知道是否有一种方法可以在 SELECT INTO 中使用 @cylce_nbr 条件在 WHERE 本身中执行此操作。

这是我的WHERE 子句:

WHERE ((a.gl_indicator = '0' OR a.gl_indicator = '1') 
       AND (a.gl_ins_type = '1' OR a.gl_ins_type = '3' ) 
       AND rel_file_nbr is NULL 
       AND a.alpha_line NOT LIKE '%Z'
       AND mis_process_dt >= @start_dt 
       and acctg_cyc_ym  = @acctg_cyc) 
       OR (a.prem_sys_cd='T' AND acctg_cyc_ym  = @acctg_cyc ) 

如果@cycle_nbr = 1,我只想要最后一个条件OR (a.prem_sys_cd='T' AND acctg_cyc_ym = @acctg_cyc )。我可以在某个地方放一个IF 来完成这项工作吗?还是我必须坚持使用IF(@cycle_nbr = 1) run this select ELSE run the other select

【问题讨论】:

    标签: sql-server tsql conditional-statements where clause


    【解决方案1】:

    在 OR 语句中包含您的变量,即

    OR (a.prem_sys_cd='T' AND acctg_cyc_ym = @acctg_cyc AND @cycle_nbr = 1)

    【讨论】:

    • 如果我有条件地想要一个 AND 子句怎么办?例如,如果我的变量@num = 2,我只希望AND date > start 存在。如果它是 OR 子句,我知道它是如何工作的,但我不确定它是否会与 AND 一样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 2012-04-20
    • 2015-08-23
    相关资源
    最近更新 更多