【问题标题】:Multiple statements in a where clausewhere 子句中的多个语句
【发布时间】:2019-04-01 15:43:15
【问题描述】:

我正在尝试创建一个 where 子句,它有 2 个可以一起工作的语句,然后是一个单独的语句,如果它满足特定条件,则可以自行工作

我已经尝试过 CASE 语句、AND 和 OR,但仍然没有任何效果

WHERE HB.CreatedByDate = @ReportDateN AND HB.Date = @ReportDateN - 1

所以这段代码是我当前的 where 子句,它得到的结果是 CreatedByDate 等于变量 @ReportDateN,但常规日期也等于变量 @ReportDateN,除了它减去一天。

这本身就是我想要它做的,但我想添加更多。

我想这样做,如果一个名为 @WeekDay = 'Monday' 的变量在第二部分从 @ReportDateN 中减去 3 而不是 1。

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 只需将1 替换为CASE @WeekDay WHEN 'Monday' THEN 3 ELSE 1 END

标签: sql tsql sql-server-2017


【解决方案1】:
   WHERE HB.CreatedByDate = @ReportDateN
     AND HB.DATE = CASE 
        WHEN @Weekday = 'Monday'
            THEN (@ReportDateN - 3)
        ELSE (@ReportDateN - 1)
         END

这也可以通过组合OR语句来完成

WHERE HB.CreatedByDate = @ReportDateN AND 
      (
       @Weekday = 'Monday' AND HB.Date = (@ReportDateN - 3) 
      )
   OR
      (
        @Weekday != 'Monday' AND HB.Date = (@ReportDateN - 1) 
      )

仅供参考,请注意以下内容无效:

 WHERE CASE @Weekday = 'Monday' THEN .... ELSE ..... END 

编辑:每个操作的评论如下:

WHERE HB.CreatedByDate = @ReportDateN AND 
      (
       @Weekday = 'Monday' AND (
                                HB.Date = (@ReportDateN - 3) OR
                                HB.Date = (@ReportDateN - 2) OR
                                HB.Date = (@ReportDateN - 1) 
                               )  
      )
   OR
      (
        @Weekday != 'Monday' AND HB.Date = (@ReportDateN - 1) 
      )

【讨论】:

  • 感谢您和其他所有人的帮助。这按我的要求工作,但我想再添加一件事。如果你得到我,是否有可能在我带走的 3 天之间得到结果?所以说这是星期一,我要花 3 天时间才能到星期五。我能得到周六和周日的结果吗?再次感谢您的帮助!
  • @ChungWill 我会更新我上面提供的解决方案之一。如果你想使用我提供的其他解决方案,我建议你自己玩,如果需要帮助,请回来。
  • 完美,非常感谢。我还在早期学习 SQL,有时试图找出正确的逻辑来做我想做的事,这让我很困惑,所以谢谢!
【解决方案2】:

这个怎么样:

WHERE
     HB.CreatedByDate = @ReportDateN AND
     (
        @WeekDay = 'Monday' AND HB.Date = @ReportDateN - 3
        OR
        HB.Date = @ReportDateN - 1
    )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 2014-09-08
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多