SQL превратить динамическое число c строк в столбцы с несколькими столбцами - PullRequest
0 голосов
/ 18 февраля 2020

У меня большая таблица до 90 строк и 40 столбцов. Ради отчетности SSRS эти данные необходимо преобразовать в один столбец, чтобы их можно было отображать в виде одностраничного отчета. Я не буду использовать все строки, но хорошие 50 применимы к набору данных отчетов.

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

Вопрос в том, возможно ли это? И если да, то какой подход будет лучшим?

Возможно, Pivot является решением, но мне было интересно, есть ли более быстрый способ переместить все 2-й, 3-й и c рядов в верхний ряд и добавить идентификатор перед столбцом columnName из строки, которая перемещается вверх?

Пример таблицы:

        -------------------------------------------------------------------------------------------------
        |ActID | MList | List | Seg | Amt1  | Amt2 | Amt3 | Amt4 | Date1  | Date2  | Char1  |... Char30 |
        -------------------------------------------------------------------------------------------------
        |ABCD  |    1  |   1  | AA  | 20.00 | 5.00 | 0    | 0    | 1/2/19 | 2/5/19 | Null   |    Text1  |                            
        |ABCD  |    1  |   2  | AB  | 0     | 0    | 0    | 0    | Null   | Null   | Null   |    Null   |      
        |ABCD  |    1  |   3  | AC  | 35.00 | 24.00| 33.00| 0    | Null   | Null   | Text3  |    Text4  |                                 
        |ABCD  |    2  |   1  | AA  | 0     | 0    | 0    | 0    | 5/5/17 | 3/5/12 | Text19 |    Text30 |              
        |ABCD  |    2  |   2  | AB  | 25.00 | 99.00| 18.00| 5.00 | 2/2/14 | 3/3/19 | Null   |    Null   |                                         
        |FGHA  |    1  |   1  | AA  | 0     | 0    | 0    | 0    | Null   | Null   | Text22 |    Null   |                            
        |FGHA  |    1  |   2  | AB  | 0     | 0    | 0    | 0    | 1/1/20 | 1/1/20 | Null   |    Text5  |                            
        -------------------------------------------------------------------------------------------------

Я пытаюсь использовать первые два столбца в качестве идентификаторов, а затем объединить все столбцы поля сумма / символ / дата, используя поля Список + Сег в качестве полезной маркировки.

Таким образом, конечный результат будет выглядеть примерно так:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|ActID | MList | 1AAAmt1 | 1AAAmt2 | 1AAAmt3 | 1AAAmt4 |1AADate1 |1AADate2 | 1AAChar1 |...1AAChar30 | 2ABAmt1 | 2ABAmt2 | 2ABAmt3 | 2ABAmt4 | 2ABDate1 |2ABDate2 | 2ABChar1 |...2ABChar30 | ...etc |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|ABCD  |   1   | 20.00   | 5.00    | 0       | 0       | 1/2/19  | 2/5/19  | Null     |     Text1   | 0       | 0       | 0       | 0       | Null     | Null    | Null     | Null        | ...etc |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

Используется SQL Server 2012

1 Ответ

0 голосов
/ 19 февраля 2020

SSRS позволяет создавать группы строк и столбцов для динамического вращения данных в матрице. В этом примере у вас будет группа строк в ActID и группа столбцов в списке. Группа столбцов будет охватывать эти ~ 37 столбцов и повторять их все для каждого номера списка в наборе данных.

Если вы запрашиваете поля Char в строках, а не в столбцах, вы можете иметь их переменное количество и использовать их в качестве вложенной группы столбцов в отчете.

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

...