1

我在 Report Builder 3.0 中使用 SQL 查询创建了一个数据集。我没有order by在查询中指定一个,而是用来union all按我想要的顺序堆叠结果。此数据集中的第一列称为Product

当我在报表生成器中创建一个表时,引用该Product列,无论出于何种原因,它都希望默认为该列的字母排序 - 这是我不想要的。

我能做些什么??Report Builder 3.0 看起来很原始,所以如果我对这种烦恼无能为力,那就这样吧。

4

3 回答 3

1

@Catcall 关于结果集“未定义”是绝对正确的。但是,我认为您看到按第一列排序的结果的原因可能是因为您使用了 Report Builder 向导来创建输出表。这往往会创建一堆嵌套的行组,并且可能首先对产品进行分组,从而对产品进行排序。

如果您创建一个新表并将该行保留为“详细信息”行(它将显示为等号而不是括号/大括号),那么通常报告生成器将按查询返回的顺序输出。

但是,最好的做法是明确定义排序顺序,我会RANK()在每个查询中使用或类似的方式为您提供一个数字SortOrder列。然后在报表生成器中使用它作为排序表达式。

于 2011-05-18T10:03:49.767 回答
1

尝试删除行组中的排序选项。(组属性/排序)。

接下来,在 tablix 属性中添加新的排序。 https://msdn.microsoft.com/en-us/library/dd255193.aspx

于 2015-04-07T21:40:18.400 回答
0

我没有在查询中指定 order by,而是使用 union all 按我想要的顺序堆叠结果。

在没有显式ORDER BY子句的情况下,将返回的订单行是不确定的。随着执行环境的变化,它可以——而且经常会——从一次运行更改为另一次运行。如果您不指定ORDER BY,则查询优化器可以自由地按照它认为最有效的顺序返回行。你不能依赖它每次都做出同样的选择。

也许报表生成器会ORDER BY在基础查询中使用显式。

于 2011-05-09T21:57:30.067 回答