SQL SERVER Объединение нескольких строк с несколькими столбцами в одну строку с одним столбцом - PullRequest
0 голосов
/ 25 июня 2018

Хорошо, ребята, это заставило меня закатить глаза на несколько дней.Допустим, у меня есть две (или более) таблицы, как показано ниже.

TABLE1

ID  | NAME      | DATE          | MORE COLS....
1   | MARK      | 2018-31-10    | ....
2   | JOHN      | 2018-29-10    | ....
...

TABLE2

FK_TBL1_ID | Data1     | Data2     | 
1          | 11111     | 33333     | 
1          | 22222     | 44444     | 
2          | 12345     | 67899     | 
...

И я хотел бы объединить несколько столбцов каждой строки с одинаковым идентификатором этих таблиц в ЕДИНАЯ СТРОКА и ЕДИНАЯ КОЛОННА , как показано ниже.Каждая новая «строка» будет отделена от предыдущей с помощью «;».

QUERY RESULT

ID  | NAME      | DATE          |       Data1Data2        | 
1   | MARK      | 2018-31-10    |  1111 3333; 2222 4444;  | 
2   | JOHN      | 2018-29-10    |  12345 67899            | 

Как бы вы поступили так?я нашел примеры для FOR XML PATH, но только когда есть несколько строк с двумя столбцами и объединены в разные строки.

1 Ответ

0 голосов
/ 25 июня 2018

Вот пример с вашими данными:

select t1.*,
       stuff( (select '; ' + coalesce(data1, '') + ' ' + coalesce(data2, '')
               from table2 t2
               where t2.FK_TBL1_ID = t1.id
               for xml path ('')
              ), 1, 2, ''
            ) as Data1Data2
from table1 t1;
...