Отказ от ответственности : Я думаю, вы, возможно, направлялись в кроличью нору; Это не то, как работают реляционные наборы данных (в общем).
Кроме того, должно ли значение последней строки быть "9" (а не "3")? Вы не определили, откуда оно берется, поэтому я предположил, что это атрибут "Цель".
WITH CTE_1 AS (
SELECT PARSE_JSON($1) AS MY_JSON
FROM VALUES
($$
{
"IntervaTime": [
{
"FromActivity": "FirstDoorOpened",
"Goal": "2",
"Order": "1",
"ToActivity": "LastDoorOpened"
},
{
"FromActivity": "FirstCustomerEntered",
"Order": "2",
"ToActivity": "LastCustomerEntered"
},
{
"FromActivity": "FirstEmployeClockedIn",
"Goal": "9",
"Order": "3",
"ToActivity": "LastEmployeClockedIn"
}
]
}
$$)
)
,CTE_2 AS (
SELECT X2.VALUE:"Order"::INTEGER AS EVENT_SEQ
,'Mins_' || X2.VALUE:"FromActivity"::VARCHAR || '_' || X2.VALUE:"ToActivity"::VARCHAR AS LINKED_EVENTS
,X2.VALUE:"Goal"::VARCHAR AS GOAL
,*
FROM CTE_1 X
,LATERAL FLATTEN(TO_ARRAY(X.MY_JSON:"IntervaTime")) X2
)
,CTE_3 AS (
SELECT EVENT_SEQ AS SORT1
,0 AS SORT2
,LINKED_EVENTS AS OUTPUT_STR
FROM CTE_2
UNION ALL
SELECT EVENT_SEQ
,1
,GOAL
FROM CTE_2
)
SELECT OUTPUT_STR
FROM CTE_3
ORDER BY SORT1
,SORT2
;