[转]合并行记录

我现在想把几条记录合并成一条,比如
姓名 科目
张三 语文
张三 英语
张三 物理
李四 语文
李四 化学

我想合并成
李四 化学 语文
张三 数学 物理 英语

if object_id('tablename') is not null drop table tablename
select '张三' as 姓名, '语文' as 科目
into tablename
union select '张三', '数学'
union select '张三', '英语'
union select '张三', '物理'
union select '李四', '语文'
union select '李四', '化学'
go
----------------------
if object_id('fn_合并') is not null drop function fn_合并
go
create function fn_合并(
@姓名 varchar(20)
)
returns varchar(300)
as
begin
declare @r varchar(300)
set @r=''
select top 3 @r=@r+' '+科目 from tablename where 姓名=@姓名
if @r<>''
set @r=stuff(@r,1,1,'')
return @r
end
go

--调用
select 姓名,dbo.fn_合并(姓名) as 科目 from tablename
group by 姓名

drop function fn_合并
drop table tablename

姓名 科目
---- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
李四 化学 语文
张三 数学 物理 英语

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在进kettle合并记录时,我们遇到了一个问题:合并记录.0和接收到的第一的列名不同,它们有不同的格式。 首先,我们需要了解kettle中的合并记录步骤。合并记录是将两个或多个输入源的记录合并为一个输出源的步骤。在这个过程中,我们需要确保不同输入源的列名和数据类型是一致的,这样才能正确地合并记录。 进一步分析这个问题,我们可以看到,合并记录.0和接收到的第一的列名不同的问题是因为它们的列名格式不同。这可能是由于不同输入源的数据结构或格式不同造成的。 解决这个问题的方法有几种: 1. 调整列名格式:我们可以通过调整合并记录.0和接收到的第一的列名格式,使它们一致。这样做的方式可以有很多种,例如使用数据清洗的方法对列名进格式调整,或者在输入源之前进预处理以确保列名一致。 2. 使用数据整理工具:我们可以使用数据整理工具来处理这个问题。这类工具可以帮助我们将不同输入源的数据进整理和换,包括调整列名格式。在调整列名格式的过程中,我们需要参考具体的数据结构和要求,确保合并记录的正确性。 3. 修改数据源:如果可能的话,我们可以尝试修改输入源的数据结构或格式,使得合并记录.0和接收到的第一的列名一致。这可能需要与数据源的所有者或提供者进合作,共同解决这个问题。 总之,合并记录时遇到合并记录.0和接收到的第一的列名不同的问题,我们需要对列名进格式调整,使用数据整理工具或修改数据源来解决这个问题。这样才能确保合并记录的正确性和成功合并
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值