0

Мой вопрос:Сделать строки Multile для одной строки на основе двух столбцов

VALUES:  **TABLE A** 

ID  Number  Code 
ABC99  1   XYZ0 
ABC99  1   XyZ1 
ABC99  2   XZY2 
ABC99  3   XYZ1 
ABC99  3   XwZ4 
DEF88  5   QPR1 
DEF88  5   QPR2 
DEF88  6   QPS1 

Желаемая Out Put: ID должны быть различны с соответствующим номером и кода каскадных кодов

ВЫВОД:

ID  Number  Code 
ABC99  1   XYZ0,XyZ1 
ABC99  2   XZY2 
ABC99  3   XYZ1,XwZ4 
DEF88  5   QPR1,QPR2 
DEF88  6   QPS1 

Идентификатор вывода: ID совпадает с уникальным номером и делает несколько строк (код) в одну строку, разделенную запятой (независимо от того, сколько они).

+0

Дублированный: http://stackoverflow.com/questions/31211506/how-stuff-and-for-xml-path-work-in-sql-server – McNets

ответ

0
declare @t table (
    ID varchar(10), 
    Number int, 
    Code varchar(10) 
) 

insert into @t values 
('ABC99', 1, 'XYZ0'), 
('ABC99', 1, 'XyZ1'), 
('ABC99', 2, 'XZY2'), 
('ABC99', 3, 'XYZ1'), 
('ABC99', 3, 'XwZ4'), 
('DEF88', 5, 'QPR1'), 
('DEF88', 5, 'QPR2'), 
('DEF88', 6, 'QPS1'); 


select 
    ID, Number, 
    stuff((select ',' + Code from @t b 
      where a.ID = b.ID 
      and a.Number = b.Number 
      for XML PATH('') 
    ),1,1,'') Codes 
from @t a 
group by ID, Number; 
+0

IT работает. Спасибо, Гурв – Louis