【问题标题】:SQL Where clause with dynamic IN() operator带有动态 IN() 运算符的 SQL Where 子句
【发布时间】:2013-01-14 06:51:12
【问题描述】:

我有一个查询,稍后将用于构建 SSRS-2008 报告。 此查询将用作许多报告的通用模板。

因此,查询中有很多参数,每个报表都应该在报表生成器中相应地配置参数。

经过这么长的介绍,我的问题是:

在查询的WHERE 子句中,参数带有IN() 运算符,例如:

WHERE Users IN(@p1) AND ...

一份报告中的@p1可以是特定用户(例如WHERE Users IN(121,154,151)),而在不同报告中可以是所有用户。在那种情况下,这是我的问题,参数@p1 应该得到什么值?

我知道我可以使用不同的数据集来检索所有用户并将其放入参数中,但我想避免这种情况(由于性能问题并保持查询尽可能通用)并想知道是否还有其他选择吗? (类似于IN('% %')

谢谢。

【问题讨论】:

    标签: sql sql-server-2008 where-clause


    【解决方案1】:

    首先我喜欢你充满爱的照片,祝你生活愉快。

    在那之后您可能会发现This same question of mine about list-like parameters 很有用,我几天前问过它,并提出了非常好的各种解决方案。

    希望对你有帮助。

    【讨论】:

    • 首先感谢您的夸奖,也祝您生活愉快。这张照片是去年我们的婚礼上拍的。关于这个问题 - 谢谢,我想我找到了我想要的东西。吉尔
    • @GilPeretz 我很高兴在世界的一个新地方找到了一位新朋友。马赫迪
    • 同在,很高兴认识你,伙计!
    【解决方案2】:

    你可以通过改变参数来做到这一点

      @p1 = "SELECT users FROM table"
    

    【讨论】:

    • 我不处理查询中的参数,只在报表生成器中处理。另外我希望不使用另一个表(用户表),只使用主查询中的表。
    猜你喜欢
    • 2011-01-10
    • 1970-01-01
    • 2011-01-18
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多