SQL:根据多组最小值选择多个列?

时间:2012-10-02 01:09:13

标签: sql sql-server

以下查询为我提供了一行,因为b.id已固定。我想要一个查询,我可以给出一组id并获得每个id的最小值行。

我想要的效果就好像我将这个查询包装在一个id集合的循环中,并执行查询,每个id为b.id = value,但这将是(数十?)数千个查询。


select top 1 a.id, b.id, a.time_point, b.time_point
from orientation_momentum a, orientation_momentum b
where a.id = '00820001001' and b.id = '00825001001'
order by calculatedValue() asc

这是在sql-server上,但如果可能,我更喜欢便携式解决方案。

1 个答案:

答案 0 :(得分:1)

SQL Server排名功能应该可以解决问题。

select * from (
select a.id, b.id, a.time_point, b.time_point, 
rank() over (partition by a.id, b.id
order by calculatedValue() asc) ranker
from orientation_momentum a, orientation_momentum b
where a.id = '00820001001' and b.id between 10 and 20
) Z where ranker = 1