【问题标题】:How to specify an order for the columns in a matrix?如何为矩阵中的列指定顺序?
【发布时间】:2010-10-03 13:01:03
【问题描述】:

我正在编写一个 SQL Reporting Services 报告(在 VS.Net 2005 中),它以矩阵形式显示不同数据的计数。这些列对特定集合中的客户数量进行计数。所以我有几个这样的列:“1个雇主”、“2-9个雇主”、“10-19个雇主”等等。

我遇到的问题是 SQL Reporting Services 按字母顺序对矩阵中的列进行排序。所以我最终在“1 个雇主”列之后但在“2-9”之前有一个“10-19”列。

有没有办法解决这个问题? 或者可能是一种将列标签更改为正确排序的技巧?

谢谢。

【问题讨论】:

  • 感谢您在我需要问同样问题之前的几个月提出这个问题!

标签: sql visual-studio reporting-services matrix


【解决方案1】:

这也可以通过将新列添加到排序顺序的查询中来完成。然后右键单击矩阵中的列组并选择组属性。在左侧选择排序。从这里您可以指定另一列作为排序依据,而不是列标题。无需自定义公式。

【讨论】:

  • 这是最好的解决方案。我希望我能接受它,这样它就会在此处排在首位。
  • 这是最有用的解决方案。
  • 为此,您可以使用此 SQL 获取新列:SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS SLNO
【解决方案2】:

我们做了很多 SSRS 报告,这一直是 mdx 的问题。这是我们这样做的一种方法:

分组和排序属性中设置排序来按这个表达式排序:

=iif(Fields!DataSetField.Value = "ColumnName", "zzz", Fields!DataSetField.Value)

其中“zzz”可以是一个数字或任何您需要的帮助排序,然后根据此表达式选择 Direction 作为升序或降序。

【讨论】:

    【解决方案3】:

    这可能有点令人费解,但我们遇到了类似的问题,无法更改 SQL。 我们所做的是在数据集中创建一个计算字段,该字段为每列返回一个数字,并根据该数字对组进行排序。

    【讨论】:

      【解决方案4】:

      我遇到了类似的问题,但没有及时找到使用矩阵的解决方案 - 所以我使用了一个表格 - 并将所需的矩阵逻辑放入我的 SQL 语句中。 这不是最好的做法,但它确实有效 - 它足够快,而且不需要那么长时间来编写。

      【讨论】:

        【解决方案5】:

        我进入了 MATRIX --> PROPERTIES --> GROUPS。 然后,我“移动”了我希望它在列表中按 UP 排序的 GROUP。 我去了预览版,效果很好。 它甚至使我的列顺序保持不变。

        【讨论】:

        • 为什么你认为这会解决海报的问题?他的问题是按字母顺序排序。
        【解决方案6】:

        转到编辑组 - 排序 - 将表达式的方向更改为降序。

        【讨论】:

        • 为什么你认为这会解决海报的问题?他的问题是按字母顺序排序。
        【解决方案7】:

        对于 Tablix 的不同数字顺序,请在表达式中使用以下代码行。

        =RunningValue(CountDistinct("YourTableName"),Count,"YourTableName")

        【讨论】:

          【解决方案8】:

          只需转到 tablix/Matrix 列组并右键单击组属性然后转到排序并从排序中删除自动添加的记录。现在您的排序将基于您在数据集中添加的数据。

          【讨论】:

            猜你喜欢
            • 2019-04-02
            • 1970-01-01
            • 1970-01-01
            • 2015-09-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多