首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

啊哦,sql2008如何合并行,真心不懂

2013-04-05 
啊哦,sql2008怎么合并行,真心不懂IdAllTestIdAnswer 13747中文13847英文要这样:IdAllTestIdAnswer 13747中

啊哦,sql2008怎么合并行,真心不懂

Id     AllTestId     Answer 
137    47            中文
138    47            英文

要这样:
Id     AllTestId     Answer 
137    47            中文|英文


sql2008 要怎么写捏??真心不会这个          
[解决办法]

----------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-03-31 00:30:59
-- Version:
--      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86) 
--Jun 17 2011 00:57:23 
--Copyright (c) Microsoft Corporation
--Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([Id] int,[AllTestId] int,[Answer] varchar(4))
insert [huang]
select 137,47,'中文' union all
select 138,47,'英文'
--------------开始查询--------------------------
select MIN(a.[Id])[Id],a.[AllTestId],
stuff((select '
[解决办法]
'+[Answer] from [huang] b 
       where b.[AllTestId]=a.[AllTestId]
       for xml path('')),1,1,'') '[Answer]'
from [huang] a
group by  a.[AllTestId]
----------------结果----------------------------
/* 
Id          AllTestId   [Answer]
----------- ----------- ----------------------------------------------------------------------------------------------------------------
137         47          中文
[解决办法]
英文
*/

[解决办法]
select id=min(id),alltestid,[answer]=stuff((select '
[解决办法]
'+[answer] from tb b where a.alltestid=b.alltestid for xml path('')),1,1,'') from tb a group by alltestid

热点排行