csdn发帖的地方有个错误,没写完!
现在要把DATA1中不重复的数据插入到data2中,
如:公司1的数据有2条,在data2中就插入1条就行。 TABLE DATA2 ID NUMBER COMPANY CNUMBER
1 1234 公司1 1234,3456 把其他重复的累加更新到保留的cnumber中。
3 3456 公司2 null
...
n 3456 公司N null
现在要把DATA1中不重复的数据插入到data2中,
如:公司1的数据有2条,在data2中就插入1条就行。 TABLE DATA2 ID NUMBER COMPANY CNUMBER
1 1234 公司1 1234,3456 把其他重复的累加更新到保留的cnumber中。
3 3456 公司2 null
...
n 3456 公司N null
go
create table [data1]([id] int,[number] int,[company] varchar(5),[cnumber] varchar(10))
create table [data2]([id] int,[number] int,[company] varchar(5),[cnumber] varchar(10))
insert [data1]
select 1,1234,'公司1',null union all
select 2,3456,'公司1',null union all
select 3,3456,'公司2',null--select * from [data1]insert data2
select min(id),min(number),company
,stuff((select ','+rtrim(number) from data1 where company=a.company for xml path('')),1,1,'')
from data1 a
group by companyselect * from data2--测试结果:
/*
id number company cnumber
----------- ----------- ------- ----------
1 1234 公司1 1234,3456
3 3456 公司2 3456*/
if object_id('[data1]') is not null drop table [data1]
go
create table [data1]([id] int,[number] int,[company] varchar(5),[cnumber] varchar(10))
create table [data2]([id] int,[number] int,[company] varchar(5),[cnumber] varchar(10))
insert [data1]
select 1,1234,'公司1',null union all
select 2,3456,'公司1',null union all
select 3,3456,'公司2',null--select * from [data1]insert data2
select min(id),min(number),company
,dbo.F_Str(company)
from data1 a
group by companyselect * from data2--测试结果:
/*
id number company cnumber
----------- ----------- ------- ----------
1 1234 公司1 1234,3456
3 3456 公司2 3456*/
if object_id('F_Str') is not null
drop function F_Str
go
create function F_Str(@compnay varchar(10))
returns nvarchar(100)
as
begin
declare @S nvarchar(100)
select @S=isnull(@S+',','')+rtrim(number) from data1 where company=@compnay
return @S
end
go