Изменение размера таблиц в зависимости от количества записей в SSRS - PullRequest
0 голосов
/ 27 мая 2019

У меня есть две таблицы с данными, как показано ниже:

            SELECT *
              FROM [dbo].[TestTable_1]
            ID  Value
            ----------
            1   gjha      
            2   dc        
            3   d         
            4   ds        
            5   dg        
            6   hn    

2-я таблица:

            SELECT *
              FROM [dbo].[TestTable_2]
            Value
            -----
            jklsa
            dfv
            b
            grt
            trj
            h
            muik
            rg
            kuu
            wd
            gb
            nm
            wef

Я получаю данные в отчете SSRS, как показано ниже:
enter image description here

Вопрос:

Как мне сохранить размер таблицы таким же?То есть, если в маленькой таблице в отчете SSRS есть 6 записей (что в данном случае), большая должна скорректировать тот же размер, что и малая, и дополнительные (/ более) записи, приходящие в большую таблицу, должны сместиться вправо.

Вот ожидаемый результат от SSRS

            Value           Value
            --------  -----------------
            gjha      jklsa |muik | wef
            dc        dfv   |rg   |
            d         b     |kuu  |
            ds        grt   |wd   |
            dg        trj   |gb   |
            hn        h     |nm   |

Примечание. Приведенные выше сведения являются лишь примерами, однако количество записей действительно динамическое.

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Я только что ответил на аналогичный вопрос здесь: https://stackoverflow.com/a/56350614/2033717

Вы можете адаптировать это решение к вашей ситуации, заменив 3 в выражениях на:

=Floor(Count(Fields!ColumnName.Value, "Dataset1") / Count(Fields!ColumnName.Value, "Dataset1"))

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

0 голосов
/ 28 мая 2019

Это не полный ответ, так как это просто то, что пришло на ум и полностью не проверено.

Прежде всего, ищите SO для создания таблицы из нескольких столбцов, уже есть множество ответов, поэтомуЯ не буду подробно объяснять здесь.Они обычно включают добавление RowNumber к каждой строке, которую затем можно использовать для вычисления строки матрицы и номера столбца матрицы, номер столбца можно использовать в матрице в качестве группы столбцов.(например, если предел строки равен 6, а номер строки равен 14, конечный номер строки будет равен 2 (14 mod 6 = 2), а номер столбца 3 будет равен Floor (14/6) +1 = 3.

Далее создайте набор данных, который будет получать наибольшее количество строк в каждой из ваших таблиц. Что-то вроде

DECLARE @a int
DECLARE @b int
SELECT @a = COUNT(*) FROM myTableA
SELECT @b = COUNT(*) FROM myTableA

SELECT CASE WHEN @a<=@b THEN @a ELSE @b END AS maxRows

Теперь у вас есть размер самой маленькой таблицы, которую вы можете передать в качестве параметрав процесс, который получает фактические данные из двух таблиц (в нашем примере это будет 6)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...