我想为 b 的每个唯一值获取前 1 行,并为 b 的特定值获取 c 的最小值。即使可以有超过 1 行具有相同的最小值(只需选择第一行)
我的表
我试过这个查询
SELECT t1.*
FROM myTable t1,
(SELECT b,
MIN(c) as c
FROM myTable
GROUP BY b) t2
WHERE t1.b = t2.b
AND t1.c = t2.c
但是,在此表中,对于给定的 b 值,c 的最小值可能有 1 个以上的实例。上述查询在这些条件下生成重复项。
我有一种感觉,我需要在某处使用 rownum,但我不太确定在哪里。
最佳答案
您可以使用 ROW_NUMBER :
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY b ORDER BY c) AS rn
FROM myTable
) AS T1
WHERE rn = 1
关于sql - Oracle 子查询前 1 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716438/