Предположим, у вас есть таблица (в Oracle):
CREATE TABLE CUSTOMER
(
customer_id NUMBER,
gender CHAR(1)
);
. Предположим, у вас есть таблица типа:
CREATE TYPE NUMBER_TABLE_TYPE AS TABLE OF NUMBER;
Можно ли написать запрос GROUP BY
, такойчто для каждой группы поля первичного ключа этой группы хранятся в NUMBER_TABLE_TYPE
?Например:
DECLARE
CURSOR gender_cursor IS
SELECT
gender,
/* The CUSTOMER_IDS column will be of type NUMBER_TABLE_TYPE: */
SOME_MAGICAL_AGGREGATE_FUNCTION(customer_id) AS customer_ids
FROM
CUSTOMER
GROUP BY
gender;
customer_ids NUMBER_TABLE_TYPE;
BEGIN
FOR gender IN gender_cursor LOOP
customer_ids := gender.customer_ids;
FOR i IN customer_ids.FIRST .. customer_ids.LAST LOOP
dbms_output.put_line(customer_ids(i));
END LOOP;
END LOOP;
END;
Я знаю, что это должно быть достигнуто с помощью двух курсоров (один для гендерной группы, а другой, который запрашивает клиентов каждой группы).Мне просто любопытно посмотреть, можно ли это сделать.:)