按日期和时间排序在SSRS中不起作用

时间:2015-04-21 08:18:24

标签: sql sql-server sorting reporting-services ssrs-2008

我正在使用 Visual Studio 2013 创建报告。我需要按降序排序2列Date,按降序排序Time(以获取最新记录)。存储过程返回正确排序的数据,但在Report It中随机排序。

我试图进入Tablix Properties> Sorting>指定列DateTime>列订单Z-A,但在添加此排序后没有任何反应,数据保持相同的顺序。

你有什么想法吗?也许是因为我在某些列(包括Row GroupDate列)中添加了Time


我的数据现在在报告中看起来像(例如我提供它):

Lisa  2015-04-21  10:20:06  Item1
John  2015-04-21  10:25:30  Item2
Peter 2015-03-18  13:35:32  Item3
Ralf  2015-04-03  09:26:52  Item4

应该(最新的记录):

John  2015-04-21  10:25:30  Item2
Lisa  2015-04-21  10:20:06  Item1
Ralf  2015-04-03  09:26:52  Item4
Peter 2015-03-18  13:35:32  Item3

2 个答案:

答案 0 :(得分:0)

如果没有看到您的SSRS报告配置,很难给出明确的答案。我会问的问题是,当你可以使用DATE时,为什么要单独存储TIMEDATETIME部分?

一种可能的解决方案是在返回结果之前将值组合成DATETIME值,并且排序可能会有效。

SELECT CONVERT(DATETIME, DateVal) + CONVERT(DATETIME, TimeVal) CombinedDateTime
FROM YOUR_TABLE

<强>示例:

这假设您在列上使用SQL DATETIME数据类型:

CREATE TABLE #Table1
    ([Name] varchar(5), [DateVal] date, [TimeVal] time, [Item] varchar(5))
;

INSERT INTO #Table1
    ([Name], [DateVal], [TimeVal], [Item])
VALUES
    ('Lisa', '2015-04-21', '10:20:06', 'Item1'),
    ('John', '2015-04-21', '10:25:30', 'Item2'),
    ('Peter', '2015-03-18', '13:35:32', 'Item3'),
    ('Ralf', '2015-04-03', '09:26:52', 'Item4')
;

SELECT *, CONVERT(DATETIME, DateVal) + CONVERT(DATETIME, TimeVal) CombinedDateTime
FROM #Table1
ORDER BY CombinedDate DESC 

DROP TABLE #Table1

答案 1 :(得分:0)

您的日期是否按日期格式排序?如果它们出于任何原因来自您的数据源作为文本,您可以通过将文本字符串转换为日期来解决此问题

e.g。 =DateSerial(left(Fields!Date.Value,4),mid(Fields!Date.Value,4,2),right(Fields!Date.Value,2))

因为您的排序表达式将从文本中提取年,月和日并转换为SSRS中的日期。

然而,在这种情况下,更优化的解决方案是修复数据源,使日期和时间成为日期和时间。

另一个可能的问题是您正在更改 tablix 的排序表达式,您是否不想为输入排序表达式?如果右键单击该组并选择组属性,则可以为单个组而不是Tablix添加排序。