Sql server 如何在报表生成器3.0查询设计器中拆分字符串?

Sql server 如何在报表生成器3.0查询设计器中拆分字符串?,sql-server,sql-server-2008,reporting-services,dynamics-crm-4,Sql Server,Sql Server 2008,Reporting Services,Dynamics Crm 4,我创建了一个名为resource Projection的报告,并创建了3个参数: 技术技能:类型:文本,多选:真,空白值:真,默认值:数据库中的一行(大约15个值) 管理技能:类型:文本,多选:真,空白值:真,默认值:数据库中的一行(大约7个值) 角色:类型:文本,多选:真,空值:真,默认值:数据库中的一行(大约30个值) 我的问题是: SELECT O.CustomerIdName, TC.New_ResourcesIdName, TC.New_number, TC.N

我创建了一个名为resource Projection的报告,并创建了3个参数:

  • 技术技能:类型:文本,多选:真,空白值:真,默认值:数据库中的一行(大约15个值)

  • 管理技能:类型:文本,多选:真,空白值:真,默认值:数据库中的一行(大约7个值)

  • 角色:类型:文本,多选:真,空值:真,默认值:数据库中的一行(大约30个值)

  • 我的问题是:

    SELECT O.CustomerIdName,
        TC.New_ResourcesIdName,
        TC.New_number,
        TC.New_RoleIdName,
        TC.New_Skill_value,
        TC.New_mng_value,
        TC.New_year,
        convert(nvarchar(10),TC.New_StartDate,101) as New_StartDate,
        convert(nvarchar(10),TC.New_EndDate,101) as New_EndDate
    FROM New_resource as TC
    INNER JOIN Opportunity as O ON
        (TC.New_ResourcesId = O.OpportunityId)
    WHERE TC.DeletionStateCode = '0' 
        and TC.New_ResourcesId is not null
        and ((TC.New_Skill_value in (@TechnicalSkills))or (TC.New_mng_value in (@ManagementSkills)))
        and TC.New_RoleIdName in (@Role)
    
    但是
    New\u Skill\u value
    New\u mng\u value
    包含如下分隔字符串:

    New_Skill_value = "Android,Java,PHP,SQL".
    New_mng_value = "Communication Skill, Decision Making Skill".
    
    现在,当我运行此报告时,它只显示只包含一个
    New\u skill\u value
    New\u Mng\u value
    的列


    那么,我如何将这两个逗号分隔的字符串分隔开,并用逗号分隔的字符串显示所有记录呢?

    正如您所说,您的新\u Skill\u值和新\u mng\u值是逗号分隔的,您传递的参数也是逗号分隔的

    因此,只有当表值和传递的变量值之间存在精确匹配时,上面的查询才会起作用

    我想这可能不会总是发生,因为您传递的变量可能包含相同的值集,但顺序不同,因此此查询可能不会返回任何内容

    因此,我在这里建议,如果可能的话,您可以将表中所有逗号分隔的列拆分为单独的表,如id、values,然后与temp表连接以获得准确的结果

    这里的临时表只是变量中的值