如何通过降序将具有组的行选择为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分钟),只能选择两个相似的其他行
答
我想你可以通过分区在你的时间戳字段的微小部分,像这样使用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;
答
我没有得到你的问题非常好,但我想你可以把你的查询的CTE并添加ROW_NUMBER它,然后选择您的CTE在您的行数场是1或2
请编辑您的问题,包括文本数据,不链接,不粘贴图片。 –
你想如何选择2行?该图显示了时间戳为3的(TA,4),(EG,5)和(EG,11)的值。您将保留哪两行,为什么? –