SSRS Switch Case - 如何按2个字段值排序

时间:2016-09-26 18:36:01

标签: sorting reporting-services field

=Switch(Fields!RptSeq.Value="1",Fields!PatientId.Value, Fields!RptSeq.Value="2",Fields!RxNumber.Value,Fields!PatientId.Value Fields!RptSeq.Value="5",Fields!DoctorName.Value,Fields!PatientId.Value, 1=1,Fields!PatientId.Value)

我需要按照这样排序我的报告thrugh表达式,如果排序seq是1然后是患者ID,如果是2那么报告应首先按RxNumber排序,然后按PatientID排序。我不知道如何对2个字段值进行排序。

如果我做Fields!RxNumber.Value,Fields!PatientId.Value排序不起作用,如果我做Fields!RxNumber.Value + Fields!PatientId.Value我得错误排序表达式。

感谢您的帮助

提前致谢。

2 个答案:

答案 0 :(得分:1)

你可以在tablix的排序标签中添加两行;一个用于表达式的第一个排序优先级:

=Switch(Fields!RptSeq.Value="1",Fields!PatientId.Value,
        Fields!RptSeq.Value="2",Fields!RxNumber.Value,
        Fields!RptSeq.Value="5",Fields!DoctorName.Value,
        1=1,Fields!PatientId.Value)

和另一个第二个排序优先级将字段设置为:

Fields!PatientId.Value

答案 1 :(得分:0)

您也可以通过将参数传递给数据集查询来处理它。

样品:

declare @RptSeq int = 1

select * from Table
order by 
        (case @RptSeq when 1 then PatientId
                      when 2 then RxNumber
                      when 5 then DoctorName
                      else PatientId
         end),
        (case @RptSeq when 2 then PatientId
                      when 5 then PatientId
         end)