如何有条件地连接字符串以便在SSRS中显示

时间:2017-07-13 21:33:54

标签: asp.net reporting-services sql-server-2008-r2

在SSRS中,我如何创建一个字段,类似于"评论"记录中的字段,有条件地列出一组字符串,具体取决于如何回答VB.NET Web表单上的一组问题?

比如说,5个问题的RadioButtonLists有" Y"," N"和" N / A"作为三个答案项目。答案进入SQL(Server 2008R2)表作为"评论"记录。

问题#2和#4被回答" N"其余的被回答" Y"或" N / A."

我试图让SSRS中的注释字段填充类似于以下内容:

Q2: 1100 - No Documentation in file.
Q4: 4100 - No Case note.

在SQL中,我尝试声明一个变量来保存字符串并根据字段内容连接问题字符串值。我在SSRS列中尝试了嵌套的IIF表达式,但我无法弄清楚如何在C#或VB中执行的操作,如string1 = string1 + string2string1 += string2,以便有选择地添加字符串到变量然后显示。

我需要为每个表单提供SSRS报告,并且每个记录都需要该评论字段列出"调查结果"或者" N"答案。

1 个答案:

答案 0 :(得分:1)

在你的评论之后,我想我明白了。您需要一个注释列,其中No值与换行符连接在一起。您必须调整以下内容以匹配您的表格,但希望这会有所帮助。

select [AssignedOneActivity], 
       Comments = STUFF( ( 
                                SELECT char(10) + char(13) + a2.[AssignedOneActivity] + ': ' + a2.answer 
                                FROM dbo.[WIA_Youth] a2 
                                where a.ReviewID = a2.ReviewID 
                                FOR XML PATH(''), TYPE 
                                ).value('.', 'nvarchar(max)'), 1, 2, ''
                        ) 
from dbo.[WIA_Youth] a

但是,我现在读到你将Q + A存储在列中。所以也许这会更好:

select
    reviewid,
    Comments =
    case when [AssignedOneActivity] = 'N' then 'Q1: No answers' + char(10) + char(13) else '' end +
    case when [AssignedTwoActivity] = 'N' then 'Q2: No answers' + char(10) + char(13) else '' end +
    case when [AssignedThreeActivity] = 'N' then 'Q3: No answers' + char(10) + char(13) else '' end 
from dbo.wia_youth