我在 Report Builder 3.0 中使用 SQL 查询创建了一个数据集。我没有order by
在查询中指定一个,而是用来union all
按我想要的顺序堆叠结果。此数据集中的第一列称为Product
。
当我在报表生成器中创建一个表时,引用该Product
列,无论出于何种原因,它都希望默认为该列的字母排序 - 这是我不想要的。
我能做些什么??Report Builder 3.0 看起来很原始,所以如果我对这种烦恼无能为力,那就这样吧。
我在 Report Builder 3.0 中使用 SQL 查询创建了一个数据集。我没有order by
在查询中指定一个,而是用来union all
按我想要的顺序堆叠结果。此数据集中的第一列称为Product
。
当我在报表生成器中创建一个表时,引用该Product
列,无论出于何种原因,它都希望默认为该列的字母排序 - 这是我不想要的。
我能做些什么??Report Builder 3.0 看起来很原始,所以如果我对这种烦恼无能为力,那就这样吧。
@Catcall 关于结果集“未定义”是绝对正确的。但是,我认为您看到按第一列排序的结果的原因可能是因为您使用了 Report Builder 向导来创建输出表。这往往会创建一堆嵌套的行组,并且可能首先对产品进行分组,从而对产品进行排序。
如果您创建一个新表并将该行保留为“详细信息”行(它将显示为等号而不是括号/大括号),那么通常报告生成器将按查询返回的顺序输出。
但是,最好的做法是明确定义排序顺序,我会RANK()
在每个查询中使用或类似的方式为您提供一个数字SortOrder
列。然后在报表生成器中使用它作为排序表达式。
尝试删除行组中的排序选项。(组属性/排序)。
接下来,在 tablix 属性中添加新的排序。 https://msdn.microsoft.com/en-us/library/dd255193.aspx
我没有在查询中指定 order by,而是使用 union all 按我想要的顺序堆叠结果。
在没有显式ORDER BY
子句的情况下,将返回的订单行是不确定的。随着执行环境的变化,它可以——而且经常会——从一次运行更改为另一次运行。如果您不指定ORDER BY
,则查询优化器可以自由地按照它认为最有效的顺序返回行。你不能依赖它每次都做出同样的选择。
也许报表生成器会ORDER BY
在基础查询中使用显式。