Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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 - Fatal编程技术网

SQL在一行中获取多个列值

SQL在一行中获取多个列值,sql,Sql,我正在使用MS Sql server 2008 R2。 我有一个查询,它给我这样的输出 Col1....Col2 CV1.....AV1 CV1.....AV2 CV2.....AV3 CV2.....AV4 问题是 select Tab1.Col1, Tab2.Col2 from Table1 Tab1 JOIN Table2 Tab2 on Tab1.PKID = Tab2.FKID 我想要的是Col1和Col2中每个不同的值对应一行,所有与Col1相关的值都使用逗号或管道分隔符 C

我正在使用MS Sql server 2008 R2。 我有一个查询,它给我这样的输出

Col1....Col2
CV1.....AV1
CV1.....AV2
CV2.....AV3
CV2.....AV4
问题是

select Tab1.Col1, Tab2.Col2 
from Table1 Tab1 
JOIN Table2 Tab2 on Tab1.PKID = Tab2.FKID
我想要的是Col1和Col2中每个不同的值对应一行,所有与Col1相关的值都使用逗号或管道分隔符

Col1....Col2
CV1.....AV1,AV2
CV2.....AV3,AV4
有人能帮我吗

基本上,我需要一些类似group_concat的东西,可以在我的sql中使用

CREATE TABLE a(
  Col1 varchar(50),
  Col2 varchar(20));   

INSERT INTO a (Col1,Col2) values ('CV1','AV1');
INSERT INTO a (Col1,Col2) values ('CV1','AV2');
INSERT INTO a (Col1,Col2) values ('CV2','AV3');
INSERT INTO a (Col1,Col2) values ('CV2','AV4');   

 with t as (SELECT Col1,(CAST(Col2 AS nvarchar (12))) as col2 from a )
    Select distinct T2.Col1,
                   substring((Select ','  +   T1.col2  AS [text()]
                    From t T1
                    Where T1.Col1 = T2.Col1
                    ORDER BY T1.Col1
                    For XML PATH ('')),2, 100) [col2]
             From t T2
尝试此查询。我是在sql server中完成的。检查sqlfiddle


您的疑问是什么?如果您不发布查询,我们将不知道如何帮助您并告诉您错误所在。AFAIK标准sql中没有字符串连接聚合函数。对于不同的数据库引擎,有一些变通方法。如果您指定您的数据库引擎或只搜索
字符串连接%database\u VENDOR\u NAME%
,这会有所帮助。例如:,可能重复的