2012-05-28 109 views
1

我的問題是我沒有得到間隔中的第一個值。選擇等於或大於先前值的值的間隔

表1中增加區間的值是Id1-Id3,Id4-Id5,Id9-Id13和Id14-Id15,但是 表2的結果是Id2-Id3,Id5,Id10-Id13和Id15缺少Id1,Id4,Id9和Id14。

我只是不知道如何獲得查詢中包含的第一個值。

包含數據源

PSS表:

ID Date Value 

1 2012-04-20 0,166666666666667 
2 2012-04-25 0,2 
3 2012-04-28 0,235294117647059 
4 2012-05-05 0,111111111111111 
5 2012-05-07 0,416666666666667 
6 2012-05-08 0,25 
7 2012-05-09 0,166666666666667 
8 2012-05-10 0,142857142857143 
9 2012-05-11 0,125 
10 2012-05-12 0,375 
11 2012-05-13 0,5 
12 2012-05-14 0,625 
13 2012-05-15 0,75 
14 2012-05-16 0,625 
15 2012-05-17 0,75 

而這個查詢:

SELECT Id, Date, Value 
FROM PSS p 
WHERE p.Value >= 
(SELECT Value 
FROM PSS 
WHERE Id = p.Id-1) 

在TABEL 2所得:

Id Date Value 

2 2012-04-25 0,2 
3 2012-04-28 0,235294117647059 
5 2012-05-07 0,416666666666667 
10 2012-05-12 0,375 
11 2012-05-13 0,5 
12 2012-05-14 0,625 
13 2012-05-15 0,75 
15 2012-05-17 0,75 
+1

你期待什麼結果? –

+0

這些ID是獨一無二的。日期也是獨一無二的。如果你想每個ID(或日期)的最大值,你仍然會得到所有的行。如果你想要整體最大值,你只會得到一個(不同的)結果元組。 – wildplasser

+0

@ChrisGessler他正在尋找一個結果,其中包含來自PSS表的行,如下所示:「1,2,3,4,5,9,10,11,12,13,14,15 –

回答

1

嘗試此

select id, date, value 
from PSS p1 
where value >= (select p2.amount from PSS p2 where p2.id=p1.id - 1) 
     or value <= (select p3.amount from PSS p3 where P3.id=p1.id + 1)