我目前從Oracle數據庫雲服務器(RIP :()遷移項目到SQL Server 2008SYS_CONNECT_BY_PATH在SQL Server中使用動態
我在Oracle中幾個查詢包含漂亮SYS_CONNECT_BY_PATH
功能。
我的問題:我有把當前的數據
ORDER_ID ORDER_GROUP_ID OPERATOR_ID GROUP_NAME VALUE_ID DESCRIPTION
--------------------------------------------------------------------------------------------------------------
1 10000 3 USER_ID not null 'panel_id or msisdn_anonym of user'
2 10000 3 MISSING_FLAG 0 'data for extrapolation are not missing'
3 10000 3 MISSING_FLAG 1 'data for extrapolation are missing'
5 10000 3 PANEL_FLAG 0 'source of user: no panel'
5 10000 3 PANEL_FLAG 1 'source of user: panel'
6 10000 3 ACTIVE_FLAG 0 'not active user'
7 10000 3 ACTIVE_FLAG 1 'active user'
1 10000 5 USER_ID not null 'panel_id or msisdn_anonym of user'
2 10000 5 MISSING_FLAG 0 'data for extrapolation are not missing'
3 10000 5 MISSING_FLAG 1 'data for extrapolation are missing'
5 10000 5 PANEL_FLAG 0 'source of user: no panel'
5 10000 5 PANEL_FLAG 1 'source of user: panel'
6 10000 5 ACTIVE_FLAG 0 'not active user'
7 10000 5 ACTIVE_FLAG 1 'active user'
我需要這樣的:
ORDER_GROUP_ID ORDER_ID OPERATOR_ID GROUP_NAME VALUE_DESCRIPTION
---------------------------------------------------------------------------------------------
10000 1 3 USER_ID [not null='panel_id or msisdn_anonym of user']
10000 3 3 MISSING_FLAG [0='data for extrapolation are not missing'] [1='data for extrapolation are missing']
10000 5 3 PANEL_FLAG [0='source of user: no panel'] [1='source of user: panel']
10000 7 3 ACTIVE_FLAG [0='not active user'] [1='active user']
10000 1 5 USER_ID [not null='panel_id or msisdn_anonym of user']
10000 3 5 MISSING_FLAG [0='data for extrapolation are not missing'] [1='data for extrapolation are missing']
10000 5 5 PANEL_FLAG [0='source of user: no panel'] [1='source of user: panel']
10000 7 5 ACTIVE_FLAG [0='not active user'] [1='active user']
這裏是我們的Exadata當前使用的代碼:
SELECT
order_group_id, order_id, operator_id, group_Name, value_description
FROM
(SELECT
order_id, operator_id, group_Name, level
, seq, cnt
, trim (REPLACE (SYS_CONNECT_BY_PATH(value_description, '#'), '#', ' ')) AS value_description
, order_group_id
FROM
(SELECT
order_id, operator_id, group_Name, VALUE_ID, description, '['||VALUE_ID||'='||description||']' AS value_description
, row_number() OVER (PARTITION BY operator_id, group_Name ORDER BY VALUE_ID, description) seq
, count(*) OVER (PARTITION BY operator_id, group_Name) cnt
, order_group_id
FROM
NIS_MDM.EPO_FUS_USER_GROUPS_V)
where level = cnt
start with seq = 1
CONNECT BY
PRIOR operator_id = operator_id and prior group_Name = group_Name
AND PRIOR seq = seq - 1
)
order by operator_id, order_id
我試圖用STUFF功能,甚至透視,但我不能得出一個正確的解決方案。
如果有人能幫助我,我會很開心。 我覺得我用不同的語言搜索整個互聯網,但沒有人解決或有我的一個陌生的問題。
檢查我的答案,讓我們知道... – 2014-09-29 16:36:20
幹得好克里希納拉拉納工作完美! 豎起大拇指 – 2014-09-30 07:13:02