变故后和前一数据对比:数据有变动,就记录在此表中;若数据相同,则只记录最初一条数据
变动后和前一数据对比:数据有变动,就记录在此表中;若数据相同,则只记录最初一条数据
------解决思路----------------------
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