對不起,因為也許這是一個愚蠢的問題,但老實說我不知道??如何處理它。讓我們想象一下,在通過clausule對 group執行選擇后,我有以下資訊:
col1 col2 col3
value1 optionA 1
value1 optionB 5
value2 optionA 3
value2 optionB 4
但我想獲得以下內容:
col1 col2 col3
value1 optionA 1
optionB 5
value2 optionA 3
optionB 4
換句話說,如果之前顯示的值相同(在本例中為 value1 和 value2),我不想顯示它
這對 Oracle 可行嗎?如果答案是肯定的,請您幫我指出正確的方向嗎?
謝謝你。
uj5u.com熱心網友回復:
您沒有說明行的排序標準是什么,所以我假設它是 ( col1, col2)。
您想要的查詢應如下所示:
select
case when col1 = lag(col1) over(order by col1, col2)
then null
else col1
end as col1,
col2,
col3
from t
uj5u.com熱心網友回復:
如果您使用的是 SQL*Plus 并使用不支持分析函式的 Oracle 版本,您可以使用它的break命令。我想現在不是這樣了,嗯?
起初:
SQL> with temp (col1, col2, col3) as
2 (select 'value1', 'optionA', 1 from dual union all
3 select 'value1', 'optionB', 5 from dual union all
4 select 'value2', 'optionA', 3 from dual union all
5 select 'value2', 'optionB', 4 from dual
6 )
7 select col1, col2, col3
8 from temp
9 order by col1, col2;
COL1 COL2 COL3
------ ------- ----------
value1 optionA 1
value1 optionB 5
value2 optionA 3
value2 optionB 4
讓我們打破它:
SQL> break on col1
SQL>
SQL> /
COL1 COL2 COL3
------ ------- ----------
value1 optionA 1
optionB 5
value2 optionA 3
optionB 4
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/314341.html
下一篇:Orcale-缺少右括號
