【问题标题】:SQL query for dataset in SSRSSSRS 中数据集的 SQL 查询
【发布时间】:2016-02-25 16:41:17
【问题描述】:

我在查询中放了两个参数; [A_from] 和 [A_to] 决定数据集表中的某个值。

这两个参数都允许 Null/empty 并且值会随参数而变化,如下所示。 我该如何为此编写查询? (尝试过 case 语句,但不起作用..)

Input)                 Output)
A_From and A_To        some Value Between A_From And A_To 
Only A_From            some value >= A_From
Only A_To              some value <= A_To
Both NULL              * (all) 

【问题讨论】:

    标签: sql reporting-services ssrs-2008 ssrs-2008-r2


    【解决方案1】:

    由于与null 的比较总是产生false,您可以使用这个:

    select *
    from my_table t
    where
      (t.value >= A_From and t.value <= A_To) or
      (t.value >= A_From and A_To is null) or
      (A_From is null and t.value <= A_To) or
      (A_From is null and A_to is null)
    

    【讨论】:

    • 感谢您的帮助。我刚刚尝试过,但是当我输入 Only A_from 和 null(应该返回 t.value 的所有值)时它什么也没返回
    • @Kitty_jp:我不确定您所说的“仅输入 A_from 并且都为空”是什么意思。你是指表中value字段的值还是参数?如果您仅谈论参数,则该陈述是矛盾的。 value 字段也可以是null 吗?如果是,那行匹配吗?
    • 对不起我的英语。我的意思是当我在参数中输入一些值时它什么都不返回:A_From,但不向 A_To 输入任何值。此外,当我给这两个参数都赋予 null 值时,它什么也不返回。
    • @Kitty_jp:我刚刚在这里尝试过,效果很好。您可能没有正确地使 SQL 适应您的表结构。你能提供你的表结构吗?
    • 是的,我指的是表中值字段的值,例如)员工代码。参数用于决定其范围。可以不向参数输入任何值。在这种情况下,结果应该是所有没有指定范围的员工代码。
    猜你喜欢
    • 2023-03-04
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多