SQL SERVER 将多行多列组合成单行单列
SQL SERVER Combine multiple rows with multiple columns into single row with single column
好的,伙计们,这几天让我翻白眼了。假设我有两个表(或更多)如下所示。
表 1
ID | NAME | DATE | MORE COLS....
1 | MARK | 2018-31-10 | ....
2 | JOHN | 2018-29-10 | ....
...
表 2
FK_TBL1_ID | Data1 | Data2 |
1 | 11111 | 33333 |
1 | 22222 | 44444 |
2 | 12345 | 67899 |
...
并且我想将这些表中具有相同 ID 的每一行的多个列组合成 A SINGLE ROW 和 SINGLE COLUMN像下面。每个新的 "row" 将与前一个用 ';' 分开。
查询结果
ID | NAME | DATE | Data1Data2 |
1 | MARK | 2018-31-10 | 1111 3333; 2222 4444; |
2 | JOHN | 2018-29-10 | 12345 67899 |
你会怎么做?我在 FOR XML PATH 上找到了例子,但只有当有多行有两列并组合在不同的行上时。
以下是您的数据示例:
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;
好的,伙计们,这几天让我翻白眼了。假设我有两个表(或更多)如下所示。
表 1
ID | NAME | DATE | MORE COLS....
1 | MARK | 2018-31-10 | ....
2 | JOHN | 2018-29-10 | ....
...
表 2
FK_TBL1_ID | Data1 | Data2 |
1 | 11111 | 33333 |
1 | 22222 | 44444 |
2 | 12345 | 67899 |
...
并且我想将这些表中具有相同 ID 的每一行的多个列组合成 A SINGLE ROW 和 SINGLE COLUMN像下面。每个新的 "row" 将与前一个用 ';' 分开。
查询结果
ID | NAME | DATE | Data1Data2 |
1 | MARK | 2018-31-10 | 1111 3333; 2222 4444; |
2 | JOHN | 2018-29-10 | 12345 67899 |
你会怎么做?我在 FOR XML PATH 上找到了例子,但只有当有多行有两列并组合在不同的行上时。
以下是您的数据示例:
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;