2017-10-08 29 views
1

我想在特定字段中選擇只有2組值的查詢。就像下面的例子。 我有一張表,通常每分鐘有2個值。但有時每分鐘有超過2的價值,我已經按降序選擇。 避免這種情況,我想分鐘值域[TimeStamp]可以按2個項目組降序排列,當有2個以上的值時跳過。如何通過降序將具有組的行選擇爲2個特定值?

SELECT TOP 10 
dbo.ConRadVacuum.[TimeStamp], 
dbo.ConRadVacuum.Tag, 
dbo.ConRadVacuum.[Value] 


FROM 
ConRadVacuum 
ORDER BY 
[TimeStamp] DESC 

我想「選擇行」(32分鐘),只能選擇兩個相似的其他行
image

+2

請編輯您的問題,包括文本數據,不鏈接,不粘貼圖片。 –

+0

你想如何選擇2行?該圖顯示了時間戳爲3的(TA,4),(EG,5)和(EG,11)的值。您將保留哪兩行,爲什麼? –

回答

1

我想你可以通過分區在你的時間戳字段的微小部分,像這樣使用row_number()功能:

select * 
from (
    select *, 
     row_number() over (
      partition by datepart(minute, cast([TimeStamp] as datetime)) 
         --^^ I use `datepart()` over cast of your timestamp field 
         --If your field is `datetime` you don't need to `cast` 
      order by [TimeStamp] desc) seq 
from t) tt 
where seq <= 2; 

SQL Fiddle Demo

1

我沒有得到你的問題非常好,但我想你可以把你的查詢的CTE並添加ROW_NUMBER它,然後選擇您的CTE在您的行數場是1或2

相關問題