Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 基于两列将多行变为单行_Sql_Sql Server_Sql Server 2008_Sql Server 2008 R2_Business Intelligence - Fatal编程技术网

Sql 基于两列将多行变为单行

Sql 基于两列将多行变为单行,sql,sql-server,sql-server-2008,sql-server-2008-r2,business-intelligence,Sql,Sql Server,Sql Server 2008,Sql Server 2008 R2,Business Intelligence,我的问题: 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 DEF

我的问题:

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
所需输出:ID应该是不同的,并连接相应的数字和代码

输出:

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

输出:ID与一个唯一的数字匹配,并将多行(代码)转换为一行,并用逗号分隔(无论有多少行)。

重复:有效。谢谢你,古尔夫
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;