我有下一个查询 - o_ski_packages是一个对象
SELECT DISTINCT p.resortsn BULK COLLECT INTO v_resortsn_tbl FROM TABLE (o_ski_packages) p; ORDER BY p.resort_country_name ASC;
我想要的结果就是这个 -
resortsn resort_country_name
1 AD
2 BU
我需要与众不同,因为我可以拥有相同数量的记录 -
1 AD,
1 AD
感谢。
答案 0 :(得分:1)
使用.button
时,distinct
需要引用order by
中的表达式。否则,Oracle将如何知道要选择哪些值?
一种简单的方法是使用select
代替group by
:
distinct
这解决了原始查询的问题,但它只返回一列。看起来你想要这样的东西:
SELECT p.resortsn
BULK COLLECT INTO v_resortsn_tbl
FROM TABLE (o_ski_packages) p
GROUP BY p.resortsn
ORDER BY MAX(p.resort_country_name) ASC;
答案 1 :(得分:0)
SELECT DISTINCT p.resortsn, max(resort_country_name) cn
BULK COLLECT INTO v_resortsn_tbl
FROM TABLE (O_SKI_PACKAGES) P
group by p.resortsn
ORDER BY cn ASC;
即使你的resort_country_name
resortsn distinct
相同,但数据库永远不会知道。因此,将resort_country_name
放入任何不需要像MAX
这样的群组的聚合函数中。您还需要按resortsn进行分组,如果您只选择resortsn
,则可能没有必要进行分组,但是当您使用多个不同的聚合函数时,您需要至少分组1.因此{{1} }