Nano Hash - криптовалюты, майнинг, программирование

Интерактивная сортировка в SSRS по значениям - матричный отчет

Мне нужна интерактивная сортировка в матричном отчете SSRS. Из базы данных мы получаем 3 столбца - PrimaryKey, Columns и Value.
Мы группируем строки по первичному ключу и группируем столбец по столбцам и используем Value < / strong> как данные.

Мой матричный отчет -

ID             [Columns]
[Primary Key]     Values

Вывод матричного отчета -

ID  FirstName   MiddleName  Lastname
1   Rajiv         Jha        Sharma
2   Prem          Kumar      Bose
3   Usha          Shamila    Praveena

Я могу использовать интерактивную сортировку по идентификатору, потому что идентификатор группируется по строкам, но я хочу использовать интерактивную сортировку по динамическим значениям cloumns, таким как FirstName, MiddleName и LastName.

Ожидаемый результат при интерактивной сортировке по фамилии

ID  FirstName   MiddleName  Lastname
2   Prem         Kumar      Bose
3   Usha         Shamila    Praveena
1   Rajiv        Jha        Sharma

Спасибо за любую помощь.


Ответы:


1

Вы используете для этого мастер отчетов? Вы должны иметь возможность применять интерактивную сортировку, используя меню свойств в группах столбцов.

Добавив интерактивную кнопку сортировки к заголовку столбца, вы можете позволить пользователю щелкнуть заголовок столбца и отсортировать строки родительской группы в таблице или матрице по значению, отображаемому в этом столбце. Порядок дочерних групп остается неизменным.

Чтобы добавить кнопку интерактивной сортировки в заголовок столбца для сортировки групп:

  1. В таблице или матрице в области конструктора отчетов щелкните правой кнопкой мыши текстовое поле в заголовке столбца для группы, в которую вы хотите добавить кнопку интерактивной сортировки.
  2. Щелкните Свойства текстового поля.
  3. Щелкните Интерактивная сортировка.
  4. Выберите Включить интерактивную сортировку в этом текстовом поле.
  5. В разделе «Сортировка» щелкните «Группы».
  6. В раскрывающемся списке выберите имя сортируемой группы. Для групп, основанных на простых групповых выражениях, значение «Сортировать по» заполняется выражением группы.

Для получения дополнительной информации см. Эту статью: http://technet.microsoft.com/en-us/library/cc627509(v=sql.100).aspx

10.07.2014
  • Спасибо Lethajd, это я уже знаю, благодаря этому мы обеспечиваем интерактивную сортировку только по группам в матрице, но мне нужна интерактивная сортировка по динамическим столбцам. 11.07.2014
  • Почему вы решили использовать динамические столбцы? В вашем примере количество столбцов на выходе кажется фиксированным, так почему бы не определить их как таковые, чтобы вы могли выполнять свою сортировку? Если вы настроены на динамику, я не думаю, что это можно сделать. 11.07.2014
  • Выходные столбцы не фиксированы, поэтому мы пытаемся использовать матрицу. В табликсе интерактивная сортировка осуществляется несколькими щелчками мыши. 14.07.2014

  • 2

    Довольно старый вопрос, но недавно я наткнулся на подобную проблему. Хотя SSRS не позволяет добавлять интерактивную сортировку по динамическим столбцам в матрице, вы можете моделировать подобное поведение. Я выяснил метод, который требует, чтобы отчет запускался сам (через действие перехода к отчету), отсортированный по желаемому столбцу.

    Я воспользуюсь немного более сложным примером, чтобы показать всю функциональность этого решения. Представьте себе книжный онлайн-магазин, которому нужен отчет, показывающий их клиентов (строки), количество книг (ценности) и общую стоимость книг (ценности), которые они купили, по категориям - Художественная / Документальная литература в моем примере (столбцы). Конечно, они хотят видеть своих лучших клиентов, поэтому сортировка будет по убыванию. Пример данных, которые мы получаем из базы данных:

    UserID          Columns    BooksCount  BooksValue
    AliBaba         Fiction    2           25.96
    AliBaba         NonFiction 4           112.00
    ThomasJefferson Fiction    3           36.83
    ThomasJefferson NonFiction 1           46.80
    BillCosby       Fiction    10          536.47
    BillCosby       NonFiction 2           26.87
    

    Отчет будет выглядеть так:

                [Columns]       
                Books Count     Books Value
    [UserID]    Values          Values
    

    Я хочу, чтобы отчет можно было сортировать по «количеству книг» или «количеству книг» для любого столбца. Вот шаги, которые нужно выполнить:

    1. Вам необходимо добавить параметры, в которых будет храниться имя столбца для сортировки - @SortColumn и имя метрики (количество или значения) для сортировки - @SortMetric.

    2. Перейдите в текстовое поле «Счетчик книг» и добавьте действие «Перейти к отчету», указав тот же отчет. Добавьте параметр @SortColumn со значением из поля [Columns] в базовый набор данных. Добавьте параметр @SortMetric со значением «BooksCount». Аналогично текстовому полю «Стоимость книг».

    3. Вы можете настроить текст заголовка столбца с помощью следующего выражения, которое покажет пользователю, по какому столбцу сортируются данные: = IIf( Parameters!SortColumn.Value=Fields!Columns.Value And Parameters!SortMetric.Value = "BooksCount" ," ^","") Это было для «Количество книг», вы можете добавить аналогичный для «Количество книг»

    4. Наконец то волшебство, которое происходит на сайте базы данных. Исходная таблица называется [Sales]. Помимо сортировки, приведенный ниже код позволяет выбрать только верхние N строк, если ваш набор данных больше. Вы можете создать набор данных с помощью этого кода или, лучше, создать хранимую процедуру. И соедините параметры отчета с параметрами набора данных.

    DECLARE @TopN INT = 50
    
    ;WITH  Users_Sorted AS
    (
        SELECT
            UserID
            ,ROW_NUMBER() OVER (ORDER BY
                CASE @SortMetric
                    WHEN 'BooksCount' THEN Sales.BooksCount
                    WHEN 'BooksValue' THEN Sales.BooksValue
                END DESC) AS ROWNO
        FROM Sales
        WHERE
            Sales.Columns = @SortColumn
    )
    
    ,Sales_MAIN AS
    (
        SELECT
            Sales.UserID
            ,Sales.Columns
            ,Sales.BooksCount
            ,Sales.BooksValue
            ,ISNULL(Users_Sorted.ROWNO,
                ROW_NUMBER () OVER (PARTITION BY Sales.Columns ORDER BY Sales.UserID ASC)
                ) AS ROWNO
        FROM Sales
            LEFT JOIN Users_Sorted ON Sales.UserID = Users_Sorted.UserID
    )
    
    SELECT * FROM Sales_MAIN WHERE ROWNO <= @TopN ORDER BY ROWNO
    
    26.02.2015
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование