ПИВОТЫ определенно шокируют, чтобы получить контроль.К счастью, в этом случае, хотя вы могли бы использовать один в качестве промежуточного шага, в этом нет необходимости.PIVOT возьмет каждое значение и поместит его в соответствующий отдельный столбец, а вам нужен только один столбец, объединяющий их все вместе.Как я уже сказал, вы могли бы сделать сводку, а затем просто объединить все сгенерированные столбцы вместе, но это намного больше работы, чем необходимо.
В 2014 году самый простой способ сделать этоиспользуя FOR XML
.Ответ Рассела Фокса в значительной степени описывает, как работает эта техника (хотя есть несколько вариантов того, как вы можете сделать это, если захотите).
Если вы точно знаете, что все значения являются целыми числами, вы можете немного сэкономить.введите и пропустите операторы type
и value
, так как они необходимы, только когда вам нужно экранировать определенные символы XML в строковых полях
select
row_nbr,
row_label,
default_order,
stuff
(
(
select concat(',', default_order)
from #temp i
where i.row_nbr = o.row_nbr
for xml path('')
), 1, 1, ''
)
from #temp o