1

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

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

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

  3. 作用:类型:文本,多选:真,空白值:真,默认值:数据库中的一行(大约 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_Skill_valueNew_mng_value包含逗号分隔的字符串,例如:

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

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

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

4

1 回答 1

0

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

所以上面的查询只有在表值和传递的变量值完全匹配时才有效。

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

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

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

于 2012-08-22T10:42:11.673 回答