我正在使用 Visual Studio 2013 创建报告。我需要按降序排序2列Date
,按降序排序Time
(以获取最新记录)。存储过程返回正确排序的数据,但在Report It中随机排序。
我试图进入Tablix Properties
> Sorting
>指定列Date
和Time
>列订单Z-A
,但在添加此排序后没有任何反应,数据保持相同的顺序。
你有什么想法吗?也许是因为我在某些列(包括Row Group
和Date
列)中添加了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
答案 0 :(得分:0)
如果没有看到您的SSRS报告配置,很难给出明确的答案。我会问的问题是,当你可以使用DATE
时,为什么要单独存储TIME
和DATETIME
部分?
一种可能的解决方案是在返回结果之前将值组合成DATETIME
值,并且排序可能会有效。
SELECT CONVERT(DATETIME, DateVal) + CONVERT(DATETIME, TimeVal) CombinedDateTime
FROM YOUR_TABLE
<强>示例:强>
这假设您在列上使用SQL DATE
和TIME
数据类型:
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添加排序。