2017-04-06 28 views
0

我想在GROUP中的後續行中重複行值。一個集團可以有一個或多個TAG。需求是在填充TAG的行和後續行中填充NEW_TAG,直到在同一組中填充另一個TAG,或者我們到達該組的末尾。在SQL中GROUP中重複值

Current Table  Required Table 

GROUPID SEQ TAG GROUPID SEQ TAG NEW_TAG 
------- --- ---- ------- --- --- -------- 
1  1   1  1  
1  2   1  2  
1  3   1  3  
1  4 4  1  4 4 4 
1  5   1  5  4 
1  6   1  6  4 
1  7   1  7  4 
1  8   1  8  4 
2  1   2  1  
2  2   2  2  
2  3   2  3  
2  4   2  4  
2  5 5  2  5 5 5 
2  6   2  6  5 
2  7   2  7  5 
2  8   2  8  5 
2  9 9  2  9 9 9 
2  10   2  10  9 
2  11   2  11  9 
+1

添加適當的數據樣本和預期的結果...不要使用圖像只不過添加文本數據也 – scaisEdge

回答

0
select 
    groupid, 
    seq, 
    tag, 
    last_value(tag) ignore nulls over (
     partition by groupid 
     order by seq 
    ) as new_tag 
from t 
order by groupid, seq; 

GRO SEQ TAG NEW_TAG 
1 1 - - 
1 2 - - 
1 3 - - 
1 4 4 4 
1 5 - 4 
1 6 - 4 
1 7 - 4 
1 8 - 4 
2 1 - - 
2 2 - - 
2 3 - - 
2 4 - - 
2 5 5 5 
2 6 - 5 
2 7 - 5 
2 8 - 5 
2 9 9 9 
2 10 - 9 
2 11 - 9 

19 rows selected. 
+0

@Samedi: - 謝謝你。但是,當我嘗試運行這段代碼時,出現以下錯誤 - 「編譯語句時出錯:FAILED:ParseException行6:23在'NULLS'處'IGNORE'附近缺少EOF' – Dhana

+0

您的Oracle版本是什麼? –

+0

其實我在HIVE中運行這個。我認爲Oracle和HIVE中的SQL功能將會相同,這就是爲什麼我在標籤中選擇了Oracle。 – Dhana