SQL语句实现合并数据(原创)
2006-02-20 17:52
543 查看
SQL语句实现合并数据(原创)
有一个表:
DepID StaffName
----------------------
101 AAAaa
101 BBBb
101 CCCccc
202 DDDddd
202 EEE
202 FFF
303 GGGGG
表说明,DepID为部门ID,StaffName为员工姓名,一个部门当然会有0..N多个员工 :)
用SQL语句如何将上面的表变成下面组合起来的方式呢。
DepID StaffNames
-------------------
101 AAAaa;BBBb;CCCccc
202 DDDddd;EEE;FFF
303 GGGGG
先创建以上的测试数据表
if exists(select name from sysobjects where name='DepStaffs' and xtype='U')
drop table DepStaffs
create table DepStaffs(
DepID int not null,
StaffName varchar(30) not null,
)
go
insert DepStaffs values(101,'AAAaa')
insert DepStaffs values(101,'BBBb')
insert DepStaffs values(101,'CCCccc')
insert DepStaffs values(202,'DDDddd')
insert DepStaffs values(202,'EEE')
insert DepStaffs values(202,'FFF')
insert DepStaffs values(303,'GGGGG')
创建一个SQLSERVER数据库的用户自定义函数:
CREATE FUNCTION [dbo].[FN_GetDepStaffNamesByDepID]
(
@DepID int
)
RETURNS [nvarchar](4000)
AS
BEGIN
DECLARE @ReturnValue [nvarchar](4000)
SET @ReturnValue = ''
SELECT @ReturnValue=@ReturnValue + LTRIM(RTRIM(DepStaffs.StaffName)) + ';'
FROM DepStaffs
WHERE DepStaffs.DepID = @DepID
SET @ReturnValue = ISNULL(@ReturnValue,';')
RETURN @ReturnValue
END
自定义函数的使用方法是这样的,注意[dbo]不能省:
SELECT DepID, [dbo].[FN_GetDepStaffNamesByDepID](DepID) As StaffNames
FROM DepStaffs
效果图:
SELECT DepID, [dbo].[FN_GetDepStaffNamesByDepID](DepID) As StaffNames
FROM DepStaffs
GROUP BY DepID
最终效果:
有一个表:
DepID StaffName
----------------------
101 AAAaa
101 BBBb
101 CCCccc
202 DDDddd
202 EEE
202 FFF
303 GGGGG
表说明,DepID为部门ID,StaffName为员工姓名,一个部门当然会有0..N多个员工 :)
用SQL语句如何将上面的表变成下面组合起来的方式呢。
DepID StaffNames
-------------------
101 AAAaa;BBBb;CCCccc
202 DDDddd;EEE;FFF
303 GGGGG
先创建以上的测试数据表
if exists(select name from sysobjects where name='DepStaffs' and xtype='U')
drop table DepStaffs
create table DepStaffs(
DepID int not null,
StaffName varchar(30) not null,
)
go
insert DepStaffs values(101,'AAAaa')
insert DepStaffs values(101,'BBBb')
insert DepStaffs values(101,'CCCccc')
insert DepStaffs values(202,'DDDddd')
insert DepStaffs values(202,'EEE')
insert DepStaffs values(202,'FFF')
insert DepStaffs values(303,'GGGGG')
创建一个SQLSERVER数据库的用户自定义函数:
CREATE FUNCTION [dbo].[FN_GetDepStaffNamesByDepID]
(
@DepID int
)
RETURNS [nvarchar](4000)
AS
BEGIN
DECLARE @ReturnValue [nvarchar](4000)
SET @ReturnValue = ''
SELECT @ReturnValue=@ReturnValue + LTRIM(RTRIM(DepStaffs.StaffName)) + ';'
FROM DepStaffs
WHERE DepStaffs.DepID = @DepID
SET @ReturnValue = ISNULL(@ReturnValue,';')
RETURN @ReturnValue
END
自定义函数的使用方法是这样的,注意[dbo]不能省:
SELECT DepID, [dbo].[FN_GetDepStaffNamesByDepID](DepID) As StaffNames
FROM DepStaffs
效果图:
SELECT DepID, [dbo].[FN_GetDepStaffNamesByDepID](DepID) As StaffNames
FROM DepStaffs
GROUP BY DepID
最终效果:
![](http://images.cnblogs.com/cnblogs_com/crazywill/snap042.jpg)
相关文章推荐
- SQL Sever中使用SQL语句实现把重复行数据合并为一行并用逗号分隔
- SQL Sever中使用SQL语句实现把重复行数据合并为一行并用逗号分隔
- C#拼接SQL语句,SQL Server 2005+,多行多列大数据量情况下,使用ROW_NUMBER实现的高效分页排序
- 用SQL语句实现随机查询数据并不显示错误数据的方法
- 如何用sql语句修改数据表中字段,实现identity(100,1)
- Oracle实现数据增删改的sql语句实例
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- 用sql语句汇总 实现语句的合并
- 用T-SQL语句实现SQL server与XLS,MDB等文件的数据交换
- SQL语句实现查询一段时间内的数据中要注意的细节问题
- [原创]用SQL语句将查询数据保存到本机excel中
- SQL语句实现:输入开始和结束时间,得到1小时间隔的平均数据。
- mysql 一条update语句实现两个表数据合并
- Sql 语句实现在同一个DB中复制表和空清一个DataTable中的所有数据
- 给定一个一oracle建表的sql语句,解析读出的字符串,将表名、字段名、字段类型数据取出,怎么实现啊?
- sql语句实现从一个表的查询出某些数据插入另外一个表中
- C# 执行多条SQL语句,实现数据库事务(通过Hashtable存储数据) .
- T-SQL语句实现SQL server与XLS,MDB等文件的数据交换
- 两张表关联如何实现同时插入数据 sql具体语句
- 一个SQL语句实现MSSQL转移表数据