如何通过降序将具有组的行选择为2个特定值?

如何通过降序将具有组的行选择为2个特定值?

问题描述:

我想在特定字段中选择只有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)的值。您将保留哪两行,为什么? –

我想你可以通过分区在你的时间戳字段的微小部分,像这样使用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

我没有得到你的问题非常好,但我想你可以把你的查询的CTE并添加ROW_NUMBER它,然后选择您的CTE在您的行数场是1或2