我正在使用SSRS 3.0和SharePoint 2013.我正在对日期字段中的SSRS报告进行排序。我使用表达式将一些日期作为字母数字插入(即“N / A”,“正在进行”)客户希望按日期排序的行包含最早的日期和“N / A”和“N / A”正在进行的“日期持续。 Sort函数首先对alpha进行排序,然后对包含日期的其他行进行排序。如何使用排序表达式对日期最旧到最新进行排序,然后对“N / A”和“正在进行”日期进行排序?谢谢!
答案 0 :(得分:0)
将结果集分为两部分,一部分用于纯日期结果,其余部分用于“正在进行的”& 'N / A'。使用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`
答案 1 :(得分:0)
您可以按如下方式使用ORDER BY子句:
SELECT MyDate FROM MyDateTable
ORDER BY
CASE WHEN MyDate IN ('n/a','Ongoing') THEN 1 ELSE 0 END,
MyDate
答案 2 :(得分:0)
您可以在SQL或报表中创建计算排序表达式。我会在报告中举一个例子,因为那是你提出的问题。
首先,进入您的组属性,然后进入“排序”选项卡。我们将添加两个排序条件。点击"添加"按钮,然后单击表达式按钮。
对于第一个条件,我们将日期和文本分开。所以表达式是这样的:
=IIf(IsDate(Fields!MyColumn.Value), 1, 2)
添加第二个排序条件并将其设置为按降序对列进行排序。这将把日期放在第一位,将文本放在它之后。