【问题标题】:SQL get multiple values of columns in one rowSQL在一行中获取多个列的值
【发布时间】:2013-06-19 09:51:08
【问题描述】:

我正在使用 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

谁能帮我解决这个问题?

基本上我需要在 My sql 中可用的 group_concat 之类的东西

【问题讨论】:

标签: sql


【解决方案1】:
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

http://sqlfiddle.com/#!3/7ab28/1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    相关资源
    最近更新 更多