Запрос Oracle:
SELECT "1_CUST_ID" AS CUST_ID1,
"1_RATE" AS RATE1,
"2_CUST_ID" AS CUST_ID2,
"2_RATE" AS RATE2,
"3_CUST_ID" AS CUST_ID3,
"3_RATE" AS RATE3,
"4_CUST_ID" AS CUST_ID4,
"4_RATE" AS RATE4,
"5_CUST_ID" AS CUST_ID5,
"5_RATE" AS RATE5,
"6_CUST_ID" AS CUST_ID6,
"6_RATE" AS RATE6
FROM (
SELECT t.*,
ROW_NUMBER() OVER ( PARTITION BY cust_id ORDER BY ROWNUM ) AS rn
FROM table_name t
)
PIVOT (
MAX( cust_id ) AS cust_id,
MAX( rate ) AS rate
FOR cust_id IN ( 1, 2, 3, 4, 5, 6 )
)
Вывод:
CUST_ID1 RATE1 CUST_ID2 RATE2 CUST_ID3 RATE3 CUST_ID4 RATE4 CUST_ID5 RATE5 CUST_ID6 RATE6
-------- ----- -------- ----- -------- ----- -------- ----- -------- ----- -------- -----
1 100 2 100 3 300 4 200 5 500 6 800
1 200 4 600 6 200
(Примечание: у вас нет способа упорядочить строки по идентификатору клиента, и запросы не гарантируютсядетерминирован в их упорядочении, поэтому вы можете обнаружить, что значения переключаются в той строке, в которой они находятся, например, если у вас в таблице включено перемещение строк.)