记录生活

SQL:获取不同版本中差异参数值

<Category: SQL Server> 查看评论

帮朋友写的一个sql,比较数据里面不同版本的参数数值


drop table dbo.ptable
Go

CREATE TABLE [dbo].[ptable](
	[para] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[value] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[ver] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]

GO
INSERT INTO [PTable] ([para],[value],[ver]) VALUES('A','1','1.1')--新版本数据有变更
INSERT INTO [PTable] ([para],[value],[ver]) VALUES('B','2','1.1')--新旧版本一样
INSERT INTO [PTable] ([para],[value],[ver]) VALUES('D','2','1.1')--老版本有,新版本没有
INSERT INTO [PTable] ([para],[value],[ver]) VALUES('A','3','1.2')
INSERT INTO [PTable] ([para],[value],[ver]) VALUES('B','2','1.2')
INSERT INTO [PTable] ([para],[value],[ver]) VALUES('C','6','1.2')--老版本没有,新版本有

Go

select * from
(
select t1.para,t1.value,t2.value preValue from (select para,value from ptable where ver='1.2') t1
 left outer join (select * from ptable where ver='1.1') t2
 on t1.para=t2.para
) t3
where
t3.value!=t3.preValue or t3.preValue is null

union
select para,'deleted' as value,value as preValue from ptable where ver='1.1'
 and para not in (select para from ptable where ver='1.2');


结果:
A 3 1
C 6 NULL
D deleted 2

本文来自: SQL:获取不同版本中差异参数值



发表评论

您必须登录后才能发表评论。