【问题标题】:SSRS sorting on a date field containing alphanumericsSSRS 对包含字母数字的日期字段进行排序
【发布时间】:2017-03-20 17:14:37
【问题描述】:

我正在使用 SSRS 3.0 和 SharePoint 2013。我正在对日期字段的 SSRS 报告进行排序。我使用表达式将一些日期插入为字母数字(即“N/A”、“Ongoing”)客户希望按日期排序的行,最旧的日期在前,“N/A”和“Ongoing”最后日期。 Sort 函数首先对 alpha 进行排序,然后对包含日期的其他行进行排序。如何让 Sort 表达式对日期从最旧到最新进行排序,然后最后对“N/A”和“Ongoing”日期进行排序?谢谢!

【问题讨论】:

    标签: sorting date reporting-services


    【解决方案1】:

    您可以在 SQL 或报表中创建计算排序表达式。我会在报告中举一个例子,因为那是你问的。

    首先,进入您的组属性,然后进入“排序”选项卡。我们将添加两个排序条件。单击“添加”按钮,然后单击表达式按钮。

    对于第一个条件,我们将日期和文本分开。所以表达式会是这样的:

    =IIf(IsDate(Fields!MyColumn.Value), 1, 2)
    

    添加第二个排序条件并将其设置为按降序对列进行排序。这会将日期放在首位,然后是文本。

    【讨论】:

    • @KimFarrell 很高兴为您提供帮助。请将此标记为已回答。
    【解决方案2】:

    将结果集分成两部分,一部分用于纯日期结果,其余用于“正在进行”和“不适用”。使用UNION 组合它们。

    这将是这样的查询:

    Select col1, col2 
    From table 
    where ... --condition to filter out those rows with real date
    order by date 
    
    UNION
    
    Select col1, case when col2 ... then 'Ongoing' when col2 ... then 'N/A'
    From table
    where ... --condition to filter out those rows need to be replace with characters
    --not necessary using `order by for this part`
    

    【讨论】:

      【解决方案3】:

      您可以简单地使用 ORDER BY 子句,如下所示:

      SELECT MyDate FROM MyDateTable
      ORDER BY 
          CASE WHEN MyDate IN ('n/a','Ongoing') THEN 1 ELSE 0 END,
          MyDate
      

      【讨论】:

        猜你喜欢
        • 2016-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多