如果条件在where子句中需要运算符

时间:2019-07-13 18:25:16

标签: sql

我有一个选择的前1个子查询,如果a = @a b <> @ b,则必须具有where子句,如果a <> @a然后b = @b

我正在尝试从子查询中获取前1个日期,该日期是(a = @a和b <> @b)或(a <> @a和b = @b )。

我已经看过使用CASE了,但是如果满足条件,它期望一个值,而不是一个语句。我已经尝试过IF条件。.开始...结束并无法正常工作

WHERE (T.Competition_Idx = TC.PtsCompID And TC.PtsMale = @histMale And TC.PtsFemale <> @histFemale And TE.StylID = @histStyle) 
                        OR (T.Competition_Idx = TC.PtsCompID And TC.PtsMale <> @histMale And TC.PtsFemale = @histFemale And TE.StylID = @histStyle)
                            ORDER BY T.Comp_Date DESC),@histStartDate)

我应该得到一个满足a = @a和b = @b的条件的日期,但是我得到的是最后一条记录的日期

1 个答案:

答案 0 :(得分:0)

我不知道问题与代码有什么关系。

但是可选参数的正常逻辑如下:

where (@a is null or a = @a) or
      (@b is null or b = @b)

我不确定这是否是您想要的。否则,您的逻辑直接翻译为:

where (@a = a and @b <> b) or
      (@a <> a and @b = b)