我有 2 个字段要在 WHERE 语句中发送值。

  • 如果变量 = 0,则将 2 个字段值设置为 100。
  • 如果变量 = 1,则将相同的 2 个字段值设置为 101。

  • 在我想象的世界中,不知何故这会起作用:
    Where CASE WHEN @ReportType = 0 THEN
        od.StatusCd = 100 AND odm.StatusCd = 100
    WHEN @ReportType = 1 THEN
        od.statusCd = 101 AND odm.StatusCd = 101
    End
    And od.CompletionDate between ....
    And so on....
    

    我知道这是错误的。但这就是我现在所处的位置。

    最佳答案

    如果我理解你想要做什么,这应该有效:

    Where
    (
    (@ReportType = 0 AND od.StatusCd = 100 AND odm.StatusCd = 100)
    OR
    (@ReportType = 1 AND od.statusCd = 101 AND odm.StatusCd = 101)
    )
    And od.CompletionDate between ....
    And so on....
    

    关于sql - Where 子句取决于变量的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26244819/

    10-10 23:23