变故后和前一数据对比:数据有变动,就记录在此表中;若数据相同,则只记录最初一条数据

变动后和前一数据对比:数据有变动,就记录在此表中;若数据相同,则只记录最初一条数据

Create Table Tb(DateTime VarChar(8),
F1_0001 Float,
F2_0001 Float,
Number Int)

Insert Into Tb Values('20141212','130','0','10')
Insert Into Tb Values('20141211','130','2500','9')
Insert Into Tb Values('20141210','130','2500','8')
Insert Into Tb Values('20141209','130','2500','7')
Insert Into Tb Values('20141208','130','2500','6')
Insert Into Tb Values('20141205','130','2500','5')
Insert Into Tb Values('20141204','130','2500','4')
Insert Into Tb Values('20141203','140','2500','3')
Insert Into Tb Values('20141202','130','2500','2')
Insert Into Tb Values('20141201','130','2500','1')

Select *
 From Tb
--Drop Table Tb

--筛选条件:只要F1_0001,F2_0001两个指标的数据有变动,就记录在此表中;若数据相同,则只记录最初一条数据.
--Number列为日期的排序值
--期望返回数据:如下
--20141212 130 0 10
--20141204 130 2500 4
--20141203 140 2500 3
--20141201 130 2500 1

------解决思路----------------------
    SELECT t2.*
      From Tb t2
 LEFT JOIN Tb t1
        ON t2.Number = t1.Number + 1
     WHERE t1.F1_0001 <> t2.F1_0001
        OR t1.F2_0001 <> t2.F2_0001
        OR t1.F1_0001 IS NULL
        OR t1.F2_0001 IS NULL

DateTime F1_0001 F2_0001 Number
-------- ------- ------- ------
20141212 130     0       10
20141204 130     2500    4
20141203 140     2500    3
20141201 130     2500    1