【发布时间】:2013-12-16 14:56:48
【问题描述】:
我有下表的数据:
A B
=== ===
M 2
M 3
M 5
N 5
N 2
O 6
P 13
P 7
P 9
P 11
P 3
现在我需要一个 PIVOT (?) 查询来:
- 按 A 列分组。
- 按 B 列排序。
- 从 B 列中取最低的 3 个值。
- 将这些值放入新列 B1、B2、B3
所以结果会是:
A B1 B2 B3
=== ==== ==== ====
M 2 3 5
N 2 5 null
O 6 null null
P 3 7 9
到目前为止,我一直在尝试使用 TOP、GROUP BY、PIVOT 创建查询。我认为最好的方法是使用 PIVOT,但由于我没有可以用作列名的值,所以我被卡住了。此外,从这些值中选择前 3 名似乎也很有挑战性。
* 编辑 *
它们是 A 列和 B 列的唯一约束,因此 B 的值对于同一个 A 始终是唯一的。
【问题讨论】:
-
您使用的是哪个数据库? Oracle 还是 SQL Server?
-
我正在使用 Oracle。我删除了不正确的标签。
-
@MartinMulder 您使用的是什么版本的 Oracle?