我正在努力寻找一种正确的方法来查询以下场景。考虑下面的表作为示例,其中我希望具有index_no 124的行用于该列的dvpc和pid值。请建议。
Index_No dvpc pid rate
123 123 30 0.01
124 123 30 0.02
答案 0 :(得分:0)
您可以使用max()和GROUP BY。
例如:
select
dvpc,
pid,
max(index_no) as max_index
from
your_table
group by
dvpc,
pid
如果你需要该指数的费率,那么这样的东西就可以了
select
t.*
from
your_table t
inner join
(
select
dvpc,
pid,
max(index_no) as max_index
from
your_table
group by
dvpc,
pid
) s
on t.index_no = s.max_index
希望这有帮助
答案 1 :(得分:0)
使用ROW_NUMBER
为Index_No
和dvpc
的每个值指定pid
的排名,然后过滤到排名最高的排名。
SELECT Index_No, dvpc, pid, rate
FROM (SELECT Index_No, dvpc, pid, rate,
ROW_NUMBER() OVER (PARTITION BY dvpc, pid ORDER BY Index_no DESC) rn
FROM your_table) yt
WHERE rn = 1;