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

怎么将查询的多笔记录的某个字段组合成一个字符串

2013-09-07 
如何将查询的多笔记录的某个字段组合成一个字符串?比如: Select 工号,部门,性别 From Employee Where 部门

如何将查询的多笔记录的某个字段组合成一个字符串?
比如: Select 工号,部门,性别 From Employee Where 部门 = '工程部'

假如结果有8笔记录,如何将这8笔记录的工号组合成一个字符串.用SQL函数返回.
[解决办法]
select stuff((select ','+工号 from employee where 部门='工程部'),1,1,'')
[解决办法]


if object_id('test') is not null drop table test
go
create table test(ccode varchar(3),bm nvarchar(10))
go
insert into test
select '001',N'工程部'
union all
select '002',N'工程部'
union all
select '003',N'工程部'

--创建函数
create function getstr(@bm nvarchar(100)) returns varchar(8000)
as
begin
declare @temp varchar(8000)
set @temp=''
select @temp=@temp+ccode from test where bm=@bm
return @temp

end

--调用函数
select dbo.getstr(N'工程部')

[解决办法]

----------------------------
-- Author  :磊仔
-- Date    :2013-01-27 11:24:40
-- Version:  
--      Microsoft SQL Server 2008 (SP2) - 10.0.4000.0 (Intel X86)   
--Sep 16 2010 20:09:22   
--Copyright (c) 1988-2008 Microsoft Corporation  
--Enterprise Edition on Windows NT 6.1 <X86> (Build 7600: )  
--
----------------------------
--> 测试数据:employee
use tempdb
GO
create table employee([工号] varchar(3),[部门] varchar(6),[性别] varchar(2))
insert employee
select 'G01','工程部','男' union all
select 'G02','工程部','男' union all
select 'G03','工程部','男' union all
select 'G04','工程部','女' union all
select 'G05','工程部','女' union all
select 'G06','工程部','女' union all
select 'G07','财务部','女'


--------------开始查询--------------------------

 select 
stuff((select ','+工号 
from employee  
where 部门=a.部门 and 性别 = a.性别 
for XML path('')),1,1,'')工号,
    部门,性别 
 From Employee a 
 Where 部门 = '工程部' 
 group by 部门,性别
----------------结果----------------------------
/*  
工号 部门     性别
------------- ------ ----
G01,G02,G03   工程部 男
G04,G05,G06   工程部 女

(2 行受影响)

 
*/


[解决办法]
 select 
 stuff((select ','+工号 
from employee 
where 部门='工程部' 
for xml path('')),1,1,'')
 /*  
G01,G02,G03,G04,G05,G06
 
*/


[解决办法]
这个应该是最基础的功能,相当于对字符串字段的sum,可惜sql没直接提供
如果需求进一步,想分组组合(楼主是全部组合),基本上只能使用函数了
[解决办法]
引用:
SQL code?123456789 select  stuff((select ','+工号             from employee             where 部门='工程部'             for xml path('')),1,1,'') /*  G01,G02,G03,G04,G05,G06  */


up 楼主应该是这个意思了吧

热点排行