Как преобразовать один столбец в одну строку в SQL Server? - PullRequest
0 голосов
/ 10 марта 2019

Я не могу найти хорошее решение для моего вопроса, у меня есть таблица для CheckBoxList, как это:

  ID  |  CheckBoxList
-----------------------
   1  |       0
   2  |       1
   3  |       2
   4  |       0

Я хочу использовать его в приложении для отчетности (с именем StimulSoft). Мне нужен способ преобразования столбца в строку, что-то вроде этого:

CheckBox0  |  CheckBox1  | CheckBox2  | CheckBox3
----------------------------------------------------
     0     |      1      |      2     |     0

Как я могу достичь этого? Я читал некоторые материалы о Pivot и Univivot, но я не мог заставить его работать. Я даже попробовал этот , он мог бы мне немного помочь, но когда я попытался изменить столбец [0] или [1] на [ch1] или [ch2], я столкнулся с ошибкой, говорящей Error converting data type nvarchar to bigint.

Ответы [ 2 ]

2 голосов
/ 10 марта 2019

Один метод условного агрегирования:

select max(case when seqnum = 1 then CheckBoxList end) as checkbox_0,
       max(case when seqnum = 2 then CheckBoxList end) as checkbox_1,
       max(case when seqnum = 3 then CheckBoxList end) as checkbox_2,
       max(case when seqnum = 4 then CheckBoxList end) as checkbox_3       
from (select t.*,
             row_number() over (order by id) as seqnum
      from t
     ) t;

Обратите внимание, что это вернет четыре столбца независимо от числа в таблице. Если вам нужно столько столбцов, сколько строк. , , тогда вам нужен динамический SQL. Я мог бы предостеречь вас от этого и использовать вместо этого агрегирование строк.

0 голосов
/ 10 марта 2019

Есть несколько способов преобразовать данные столбца в данные строки. Использование функции PIVOT

select CheckBox0, CheckBox1, CheckBox2, CheckBox3
from
(
  select Id, CheckBoxList
  from yourtable
) d
pivot
(
  max(Id)
  for CheckBoxList in (CheckBox0, CheckBox1, CheckBox2, CheckBox3)
) piv;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...