如果需要运算符的 where 子句中的条件
Posted
技术标签:
【中文标题】如果需要运算符的 where 子句中的条件【英文标题】:If condition in where clause where a operator is required 【发布时间】:2019-07-13 18:25:16 【问题描述】:我有一个 select top 1 子查询 & where 子句需要有 if a = @a the b@b else if a @a then b = @b
我试图从子查询中获取前 1 个日期,它是 (a = @a And b @b) 或 (a @a And b = @b) 条件之后的第一个日期)。
我看过使用 CASE ,但如果满足条件,它需要一个值,而不是一个语句。我已经尝试过 IF 条件..Begin ...End & 无法让它工作
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 条件的日期,但我得到了最后一条记录的日期
【问题讨论】:
不知道如何在这个论坛上回复。可能有 a = 1 和 b = 0 的记录,然后是 a = 1 和 b = 2 的记录,之后 a =1 和 b 回到 = 0。我需要获取 a = 1 和 b = 的最后日期0. 这些是合作伙伴关系,我只需要最新的合作伙伴关系的记录,当 a =1 并且 b 回到 =0 时,如果这有意义的话,它会被认为是新的伙伴关系 【参考方案1】:我不知道问题与代码有什么关系。
但可选参数的正常逻辑如下:
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)
【讨论】:
以上是关于如果需要运算符的 where 子句中的条件的主要内容,如果未能解决你的问题,请参考以下文章