帮朋友写的一个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:获取不同版本中差异参数值
本页面链接地址(或者引用地址 Trackback)




发表评论