SQL]合并一个表里面的的多行数据(如果不重复则合并,如果重复则舍弃)
2007-01-09 21:14
489 查看
[SQL]合并一个表里面的的多行数据(如果不重复则合并,如果重复则舍弃)
今天我在CSDN里提的一個問題,非常感謝馬可老大~
-------------------------------------------------------------------------
测试数据
编号 物料类别 产品编号
1 铅笔 0001
2 铅笔 0002
3 铅笔 0001
4 钢笔 0004
5 钢笔 0005
6 钢笔 0004
7 圆珠笔 0007
8 圆珠笔 0008
9 圆珠笔 0007
等等
要求实现以下效果:
编号 物料类别 产品编号
1 铅笔 0001,0002
2 钢笔 0004,0005
3 圆珠笔 0007,0008
**我的目的是如果不重复则合并产品编号,如果重复则舍弃**
--------------------------------------
marco08(天道酬勤) ( ) 信誉:100 Blog 2007-1-9 15:23:01 得分: 20
create table T(编号 int, 物料类别 nvarchar(10), 产品编号 char(5))
insert T select 1, '铅笔', '0001'
union all select 2, '铅笔', '0002'
union all select 3, '铅笔', '0001'
union all select 4, '钢笔', '0004'
union all select 5, '钢笔', '0005'
union all select 6, '钢笔', '0004'
union all select 7, '圆珠笔', '0007'
union all select 8, '圆珠笔', '0008'
union all select 9, '圆珠笔', '0007'
create function fun(@物料类别 nvarchar(10))
returns nvarchar(200)
as
begin
declare @re nvarchar(200)
set @re=''
select @re=@re+产品编号+',' from T where 物料类别=@物料类别 group by 产品编号
select @re=left(@re, len(@re)-1)
return @re
end
select distinct 物料类别, dbo.fun(物料类别) from T
--result
物料类别
---------- -------------------------------
钢笔 0004 ,0005
铅笔 0001 ,0002
圆珠笔 0007 ,0008
(3 row(s) affected)
后記:
核心語句中最后面的group by XXX 可舍棄重復。
select @re=@re+产品编号+',' from T where 物料类别=@物料类别 group by 产品编号
posted on 2007-01-09 17:19 BubbleKitty 阅读(2) 评论(0) 编辑 收藏 引用 网摘 所属分类: 問題點滴集
今天我在CSDN里提的一個問題,非常感謝馬可老大~
-------------------------------------------------------------------------
测试数据
编号 物料类别 产品编号
1 铅笔 0001
2 铅笔 0002
3 铅笔 0001
4 钢笔 0004
5 钢笔 0005
6 钢笔 0004
7 圆珠笔 0007
8 圆珠笔 0008
9 圆珠笔 0007
等等
要求实现以下效果:
编号 物料类别 产品编号
1 铅笔 0001,0002
2 钢笔 0004,0005
3 圆珠笔 0007,0008
**我的目的是如果不重复则合并产品编号,如果重复则舍弃**
--------------------------------------
marco08(天道酬勤) ( ) 信誉:100 Blog 2007-1-9 15:23:01 得分: 20
create table T(编号 int, 物料类别 nvarchar(10), 产品编号 char(5))
insert T select 1, '铅笔', '0001'
union all select 2, '铅笔', '0002'
union all select 3, '铅笔', '0001'
union all select 4, '钢笔', '0004'
union all select 5, '钢笔', '0005'
union all select 6, '钢笔', '0004'
union all select 7, '圆珠笔', '0007'
union all select 8, '圆珠笔', '0008'
union all select 9, '圆珠笔', '0007'
create function fun(@物料类别 nvarchar(10))
returns nvarchar(200)
as
begin
declare @re nvarchar(200)
set @re=''
select @re=@re+产品编号+',' from T where 物料类别=@物料类别 group by 产品编号
select @re=left(@re, len(@re)-1)
return @re
end
select distinct 物料类别, dbo.fun(物料类别) from T
--result
物料类别
---------- -------------------------------
钢笔 0004 ,0005
铅笔 0001 ,0002
圆珠笔 0007 ,0008
(3 row(s) affected)
后記:
核心語句中最后面的group by XXX 可舍棄重復。
select @re=@re+产品编号+',' from T where 物料类别=@物料类别 group by 产品编号
posted on 2007-01-09 17:19 BubbleKitty 阅读(2) 评论(0) 编辑 收藏 引用 网摘 所属分类: 問題點滴集
相关文章推荐
- storm的ack和fail为了保证数据能正确的被处理, 对于spout产生的每一个tuple, storm都会进行跟踪, 这里面涉及到ack/fail的处理, 如果一个tuple处理成功, 会调用s
- SQL日常日志: 把一个表的数据插入到另一个表中,清除表里面的数据
- 营配数据质量核查,关于营销mis系统与配电gis系统里面的sql语句查询,做为积累使用,下次就不用重复写同样的语句了。
- SQL 将一列多行数据合并为一行 FOR XML PATH
- SQL 把一个数据库里面的某张表里的数据插入到另外一个数据库里面的一张表
- sql 删除重复数据 保留一个
- 简单的Sql多行数据合并示例
- T_SQL 将一列多行数据合并为一行
- T-SQL中多行数据合并到一行(note)
- 一个过滤重复数据的 SQL 语句
- SQL求一个表中非重复数据及其出现的次数
- SQL删除重复数据方法(一个贴吧,要求删除一个表中的重复帖)
- SQL Sever中使用SQL语句实现把重复行数据合并为一行并用逗号分隔
- SQL 将相同记录的所有数据合并为一个字段
- VBA 从excel取数据到mdb里面,如果有重复则更新数据
- 删除一个表中的重复数据同时保留第一次插入那一条以及sql优化
- SQL语句 怎么把一个表的数据复制到另外一个表里面
- SQL查询,在同一个数据库,同一个表,同一个字段查出重复数据
- sql语句查询一个表里面无重复并且按照指定字段排序的sql语句
- sql 表字符串分组合并。(将sql表某列多行合为一个值)