我需要查询一个表才能返回行,但是我无法正确查询表。这是我的表格视图:
Base Altezza Materiale
10 10 Ferro
10 10 Legno
10 30 Ferro
10 30 Legno
10 30 Acciaio
20 20 Legno
结果集应返回:
Base Altezza Materiale
10 10 Ferro, Legno
10 30 Ferro, Legno, Acciaio
20 20 Legno
有人能帮助我吗?
答案 0 :(得分:1)
使用Stuff
功能与XML Path
连接行:
创建样本表:
create table mytable (Base int, Altezza int, Materiale varchar(50));
insert into mytable values
(10, 10, 'Ferro'),
(10, 10, 'Legno'),
(10, 30, 'Ferro'),
(10, 30, 'Legno'),
(10, 30, 'Acciaio'),
(20, 20, 'Legno');
<强>查询:强>
select distinct base,
altezza,
STUFF((Select ','+ materiale
from mytable T1
where T1.base=T2.base
and t1.altezza = t2.altezza
FOR XML PATH('')),1,1,'') as Materiale
from mytable T2;
<强>结果:强>
+------+---------+---------------------+
| base | altezza | Materiale |
+------+---------+---------------------+
| 10 | 10 | Ferro,Legno |
| 10 | 30 | Ferro,Legno,Acciaio |
| 20 | 20 | Legno |
+------+---------+---------------------+