Запрос для извлечения значений данных из одного столбца в 8 определенное количество столбцов - PullRequest
0 голосов
/ 04 марта 2020

У меня есть таблица с одним столбцом,

Выглядит как :

    NAMEs
-------------------
    abc
    bcd
    cde
    def
    efg
    fgh
    ghi
    hij
    ijk
    jkl
    klm

Мне нужна помощь для извлечения этих элементов в матричном формате с фиксированным 8 columns

Ожидаемое O / P

[1] |   [2] |   [3] |   [4] |   [5] |   [6] |   [7] |   [8] |
----|-------|-------|-------|-------|-------|-------|-------|
abc |   bcd |   cde |   def |   efg |   fgh |   ghi |   hij |
ijk |   jkl |   klm |   ... |   ... |   ... |   ... |   ... |
... |   ... |   ... |   ... |   ... |   ... |   ... |   ... |

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

1 Ответ

1 голос
/ 04 марта 2020

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

select [1],[2],[3],[4],[5],[6],[7],[8]
FROM  
(select names, 
1 + ((row_number() over (order by names) - 1) / 8) as rn1,  -- to mark the iteration
1 + ((row_number() over (order by names) - 1) % 8) as rn2 -- to mark the column to be pivoted
from test) tbl
pivot
(
  max(names)
  for rn2 in ([1],[2],[3],[4],[5],[6],[7],[8])
) piv;

fiddle

...