Я пытаюсь написать запрос SQL (Proc SQL), чтобы получить данные из таблицы, например:SAS SQL иерархический запрос
order_id base_order_id customer_id ========================================================== 1 null 1 //only one transaction ------------------------------------------------------------------------------- 2 null 1 //order_start 3 2 1 4 3 1 5 4 1 6 5 1 7 6 1 //order_end -------------------------------------------------------------------------------
следующим образом:
order_id last_order_id customer_id 1 null 1 2 7 1
Позвольте мне это так , Order_id 2 имеет 6 подпроцессов. Мы можем предположить, что полный заказ для этого одного клиента состоит из order_id от 2 до 7. Order start = order_id 2, когда весь заказ заканчивается на order_id 7.
Я начинаю в sas sql. Я попытался присоединиться к той же таблице через левое соединение, «имея», но ничего не получилось. Есть ли способ получить результат запроса, как в таблице 2?
Заранее спасибо.
EDIT2. SQL я написал, что приносит самый близкий результат.
SELECT t1.order_id, t1.base_order_id as last_order_id, t1.customer_id
FROM table1 t1
GROUP BY t1.order_id
HAVING (t1.order_id = max(t1.base_order_id)
or t1.base_order_id IS NULL)
Я не знаю, как это сделать, используя SQL proc SQL. Но вы можете сделать это в базовой базе данных, используя там рекурсивную/иерархическую функциональность. Или, используя другие функции в системе SAS. –
Можете ли вы объяснить, как вычисляется last_order_id? Это не совсем понятно мне из примера. – JJFord3
@ JJFord3 Я редактировал свой пост. Надеюсь, теперь это намного яснее для Тебя. – vengen