好吧,这让我转动了几天。假设我有两个如下的表(或更多表)。
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 |
...
我想将具有这些表的相同ID的每一行的多列合并为如下所示的单行和单列。每个新的“行”都将以“;”与前一个行分开。
查询结果
ID | NAME | DATE | Data1Data2 |
1 | MARK | 2018-31-10 | 1111 3333; 2222 4444; |
2 | JOHN | 2018-29-10 | 12345 67899 |
您将如何去做?我在FOR XML PATH上找到了示例,但仅当多行包含两列并组合在不同行上时。
答案 0 :(得分:3)
以下是您的数据示例:
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;