继这个问题的答案和评论之后,我试图让我的半小时时段分组工作,但无论出于何种原因,它都没有将行分别编号为 1 或 2,具体取决于分钟是更大还是更小超过 30。
谁能给我一些关于我哪里出错的线索?
select Deal, Price
from (select md.*,
row_number() over (partition by case when (datepart(minute, Deal) < 30) then 1 else 2 end
order by Deal desc) as seqnum
from MyData md
where Product = 'XXXXX' AND
CAST(Deal AS Date) = '2013-09-04'
) md
where seqnum = 1;
该seqnum
列实际上是从 1 到 N,而不是 1,2,无论是在该Deal
字段中的 30 分钟以下还是超过 30 分钟。
有任何想法吗?