繁体   English   中英

SQL Server:在行中选择行

[英]SQL Server : Select rows in rows

我在SQL Server中有下表

Names TypeID
-------------
JJ     23
KK     20 
LL     15
JJ     13
KK     18
JJ     10

我希望选择查询的结果显示如下

Names TypeID
---------------
JJ    23,13,10
KK    20,18
LL    15

我怎样才能做到这一点? 请帮助,是sql的新手

这个问题以前被回答过很多次。 例如: T-SQL是否具有聚合函数来连接字符串?

一个好的代码片段是这样的:

set nocount on;
declare @YourTable table (RowID int, HeaderValue int, ChildValue varchar(5))
insert into @YourTable VALUES (1,1,'CCC')
insert into @YourTable VALUES (2,2,'B<&>B')
insert into @YourTable VALUES (3,2,'AAA')
insert into @YourTable VALUES (4,3,'<br>')
insert into @YourTable VALUES (5,3,'A & Z')
set nocount off
SELECT
    t1.HeaderValue
        ,STUFF(
                   (SELECT
                        ', ' + t2.ChildValue
                        FROM @YourTable t2
                        WHERE t1.HeaderValue=t2.HeaderValue
                        ORDER BY t2.ChildValue
                        FOR XML PATH(''), TYPE
                   ).value('.','varchar(max)')
                   ,1,2, ''
              ) AS ChildValues
    FROM @YourTable t1
    GROUP BY t1.HeaderValue

这段代码取自与我发布链接相同的线程。

drop table #t 
create table #t(names varchar(10),type1 int)
insert into #t values('JJ',23),
('KK',20),
('LL',15),
('JJ',13),
('KK',18),
('JJ',10)

select distinct names,stuff((select ',' +cast(type1 as varchar(10)) from #t t2 where t2.names=t1.names for xml path('') ),1,1,'') as TypeID
from #t t1

现场演示

尝试这个:-

SELECT Names, GROUP_CONCAT(TypeID)
FROM YOUR_TABLE
GROUP BY Names;

尝试这个

SELECT Names, TypeID = 
    STUFF((SELECT ', ' + Convert(nvarchar(2),TypeID)
           FROM your_table b 
           WHERE b.Names = a.Names 
          FOR XML PATH('')), 1, 2, '')
FROM your_table a
GROUP BY Names

试试这个代码

SELECT name, GROUP_CONCAT(typeid)
FROM test
GROUP BY name 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM