5

我正在使用 SQL Server 2008,我需要实现这个:-> 我得到这样的结果:

表:-sql查询.......

 acc_no           name
   001-000001       John
   001-000001       Bob
   001-000001       James
   001-000002       Sam
   001-000002       Bin 
   001-000002       Dus

所以,条件是;多人可以有相同的acc_no。所以我想要以下结果:

 acc_no           name
   001-000001       John,Bob,James
   001-000002       Sam,Bin,Dus

显示结果还有其他条件,但我被困在显示这种格式上。

4

3 回答 3

9

像这样的东西怎么样

DECLARE @Table TABLE(
        acc_no VARCHAR(50),
        name VARCHAR(50)
)
INSERT INTO @Table (acc_no,name) SELECT '001-000001', 'John'
INSERT INTO @Table (acc_no,name) SELECT '001-000001', 'Bob'
INSERT INTO @Table (acc_no,name) SELECT '001-000001', 'James'
INSERT INTO @Table (acc_no,name) SELECT '001-000002', 'Sam'
INSERT INTO @Table (acc_no,name) SELECT '001-000002', 'Bin'
INSERT INTO @Table (acc_no,name) SELECT '001-000002', 'Dus'

--Concat
SELECT  t.acc_no,
        stuff(
                (
                    select  ',' + t1.name
                    from    @Table t1
                    where   t1.acc_no = t.acc_no
                    order by t1.name
                    for xml path('')
                ),1,1,'') Concats
FROM    @Table t
GROUP BY t.acc_no

SQL 小提琴演示

于 2013-08-19T06:31:51.760 回答
4
 select acc_no,stuff((SELECT distinct ', ' + cast(name as varchar(10))
       FROM yourtable t2
       where t2.acc_no = t1.acc_no
       FOR XML PATH('')),1,1,'') 
       from yourtable t1
       group by acc_no
于 2013-08-19T06:35:16.817 回答
4

试试这个——

DECLARE @temp TABLE
(
      ID VARCHAR(20)
    , Name VARCHAR(50)
)

INSERT INTO @temp (ID, Name)
VALUES 
    ('001-000001', 'John'),
    ('001-000001', 'Bob'),
    ('001-000001', 'James'),
    ('001-000002', 'Sam'),
    ('001-000002', 'Bin'),
    ('001-000002', 'Dus')

SELECT t.ID, STUFF((
    SELECT ', ' + t2.Name
    FROM @temp t2
    WHERE t.ID = t2.ID
    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '')
FROM (
    SELECT DISTINCT ID 
    FROM @temp
) t

输出 -

ID                   
-------------------- -------------------
001-000001           John, Bob, James
001-000002           Sam, Bin, Dus
于 2013-08-19T06:32:37.353 回答