我想在特定字段中选择仅包含2个值的表的表。像例子波纹管。
我有一张桌子,每分钟通常有2个值。但有时候每分钟有超过2个值,我按降序选择。
避免这种情况,我希望分钟值[TimeStamp]
的字段可以按2项降序排序,当超过2值时跳过。
SELECT TOP 10
dbo.ConRadVacuum.[TimeStamp],
dbo.ConRadVacuum.Tag,
dbo.ConRadVacuum.[Value]
FROM
ConRadVacuum
ORDER BY
[TimeStamp] DESC
我希望“选定的行”(32分钟)只能选择其他行的两个
答案 0 :(得分:1)
我没有很好地回答您的问题,但我认为您可以将查询放入CTE并将ROW_Number添加到其中,然后选择您的行编号字段为1或2的cte
答案 1 :(得分: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;