【问题标题】:Using String.Contains inside a LookupSet in SSRS在 SSRS 的 LookupSet 中使用 String.Contains
【发布时间】:2018-01-20 15:16:27
【问题描述】:

我有两个名为 A 和 B 的数据集。A 有一个名为 Paper 的字段。 B 有两个字段,分别称为 Subject 和 Grade。

这些字段中的数据如下所示:

+---------+-------+       +-----------------------------+
| Subject | Grade |       |            Paper            |
+---------+-------+       +-----------------------------+
| English | A     |       | English Literature Autumn 1 |
| Maths   | D     |       | Further Maths Spring 2      |
| Physics | F     |       | Physics                     |
+---------+-------+       +-----------------------------+

我通常使用的 LookupSet 是这样的:

=LookupSet(Fields!Paper.Value, Fields!Subject.Value, Fields!Grade.Value, "B")

但当然它只返回 F 因为 Physics 是唯一相同的字段。我需要一些可以返回其余成绩的东西。我试过了:

=LookupSet(Fields!Paper.Value, Fields!Subject.Value.IndexOf(Fields!Subject.Value) >= 0, Fields!Grade.Value, "B")

或者

=LookupSet(Fields!Paper.Value, Fields!Subject.Paper.ToLowerInvariant().Contains(Fields!Subject.Value), Fields!Grade.Value, "B")

有没有一种方法可以在不更改数据的情况下实现它?

【问题讨论】:

    标签: vb.net tsql reporting-services


    【解决方案1】:

    如果源是 SQL Server,您可以使用 LIKE 在 T-SQL 中执行此操作。

    SQL 示例

    WITH
    subject_grades
    AS
    (
        SELECT tbl.* FROM (VALUES
          ( 'English', 'A')
        , ( 'Maths', 'D')
        , ( 'Physics', 'F')
        ) tbl ([Subject], [Grade]) 
    )
    , 
    subject_papers
    AS
    (
        SELECT tbl.* FROM (VALUES
          ( 'English Literature Autumn 1')
        , ( 'Further Maths Spring 2')
        , ( 'Physics')
        ) tbl ([Paper]) 
    )
    SELECT
          sp.Paper
        , sg.Grade
    FROM 
        subject_papers AS sp
        LEFT JOIN subject_grades AS sg ON sp.[Paper] LIKE '%' + sg.[Subject] + '%'
    

    db<>fiddle

    结果

    【讨论】:

    • 谢谢这解决了问题。与晦涩的 vb.net 函数相比,在 SQL 中做这种事情似乎总是更容易/可能
    • 我发现让 SQL Server 完成大部分工作并在 SSRS 中查看结果会更容易一些。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多