SQL--合并多条记录为一条记录
生活随笔
收集整理的這篇文章主要介紹了
SQL--合并多条记录为一条记录
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
--作用:'源'表中,如果A列的記錄相同的,則把B列的記錄合并,再寫到'目的'表中,如果不相同,則原樣插入到'目的'表中 ---兩個原始表之一,源
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[源]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[源]
GO CREATE TABLE [dbo].[源] (
[編號] [int] IDENTITY (1, 1) NOT NULL ,
[相同] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[不同] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO ---兩個原始表之一,目的
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[目的]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[目的]
GO CREATE TABLE [dbo].[目的] (
[編號] [int] IDENTITY (1, 1) NOT NULL ,
[相同] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[不同] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
--要先按"相同"列進行排序編號,編號遞增,可以不從1開始,但要連續
declare @mac varchar(100),@mac1 varchar(100),@str varchar(550),@id int,@count int,@id1 int
select @id1=編號 from 源 where 編號 in (select min(編號) from 源 ) select @count=count(*) from 源
select @str=''
select @id=@id1
while @id<@count+@id1
begin
select @mac=相同 from 源 where 編號=@id
select @mac1=相同 from 源 where 編號=@id+1 if @mac=@mac1 and @id < @count+@id1-1
begin
select @str=@str+不同 from 源 where 編號=@id
select @str=@str+','
end
if @mac<>@mac1 or @id=@count+@id1-1
begin
select @str=@str+不同 from 源 where 編號=@id
insert into 目的(相同,不同) select @mac,@str
select @str=''
end
select @id=@id+1 end --truncate table 目的
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[源]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[源]
GO CREATE TABLE [dbo].[源] (
[編號] [int] IDENTITY (1, 1) NOT NULL ,
[相同] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[不同] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO ---兩個原始表之一,目的
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[目的]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[目的]
GO CREATE TABLE [dbo].[目的] (
[編號] [int] IDENTITY (1, 1) NOT NULL ,
[相同] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[不同] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
--要先按"相同"列進行排序編號,編號遞增,可以不從1開始,但要連續
declare @mac varchar(100),@mac1 varchar(100),@str varchar(550),@id int,@count int,@id1 int
select @id1=編號 from 源 where 編號 in (select min(編號) from 源 ) select @count=count(*) from 源
select @str=''
select @id=@id1
while @id<@count+@id1
begin
select @mac=相同 from 源 where 編號=@id
select @mac1=相同 from 源 where 編號=@id+1 if @mac=@mac1 and @id < @count+@id1-1
begin
select @str=@str+不同 from 源 where 編號=@id
select @str=@str+','
end
if @mac<>@mac1 or @id=@count+@id1-1
begin
select @str=@str+不同 from 源 where 編號=@id
insert into 目的(相同,不同) select @mac,@str
select @str=''
end
select @id=@id+1 end --truncate table 目的
轉載于:https://blog.51cto.com/38641581/99827
總結
以上是生活随笔為你收集整理的SQL--合并多条记录为一条记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个人的夜晚
- 下一篇: [转]快速清除SQL Server日志的