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

时间:2012-08-22 10:22:09

标签: sql-server sql-server-2008 reporting-services dynamics-crm-4

我创建了一个名为资源投影的报告并创建了3个参数:

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

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

  3. 角色:类型:文本,多个选定:True,空白值:True,默认值:数据库中的一行(大约30个值)。

  4. 我的疑问是:

    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_Skill_valueNew_mng_value包含Coma Separated字符串,如:

    New_Skill_value = "Android,Java,PHP,SQL".
    New_mng_value = "Communication Skill, Decision Making Skill".
    

    现在,当我运行此报告时,它只向我显示仅包含一个New_skill_valueNew_Mng_value的列。

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

1 个答案:

答案 0 :(得分:0)

正如您所说,您的New_Skill_value和New_mng_value以逗号分隔,并且您传递的参数也以逗号分隔。

因此,只有当表值与传递的变量值完全匹配时,上述查询才会起作用。

我想这可能不会一直发生,因为你传递的变量可能包含相同的值集,但顺序不同,那么这个查询可能不会返回任何内容。

所以我在这里建议的是,如果可能的话,你可以将表中的所有逗号分隔列拆分为单独的表,如id,values,然后再加入临时表以获得准确的结果。

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