2013-07-29 84 views
0

我有了兩列的表顯示特定值...ORACLE SQL:僅當出現不止一次

LN | SRCREF 
LN-1 | LN/123456 
LN-1 | LN/789012 
LN-2 | LN/123456 
LN-2 | LN/098765 
LN-3 | LN/123456 
LN-3 | LN/789012 
LN-3 | LN/9 

我想回到這樣的事情...

LN | SRCREF 
LN-1 | LN/123456 
LN-1 | LN/789012 
LN-2 | LN/098765 
LN-3 | LN/9 

換句話說,我只想返回一次SRCREF,但是按優先順序排列,所以我看到所有那些有LN-1的人,那些沒有LN-1但是LN-2的人,最後那些只有LN- 3秒。

我希望有道理,謝謝。

回答

2

您可以按SRCREF進行分組。這意味着您的結果中只有一個值SRCREF。

然後,您可以使用集合函數從LN中獲取一個具體值以使用該SRCREF值。在這種情況下,我正在使用返回最低值的min。因此,您可以獲得每個SRCREF值所帶的最低LN值。

最後,我使用order by按最低值排序。

select 
    min(LN) as first, 
    SRCREF 
from 
    YourTable t 
group by 
    SRCREF 
order by 
    min(LN) 

請注意,在這種情況下,您可能會得到奇怪的結果,因爲第一列是字符字段。這意味着其內容按字母順序進行比較。這意味着L-10將會在L-2之前。還有其他方法可以解決這個問題,但我不知道這是否會成爲您的問題。

+0

這是完美的,因爲代碼從LN-1到LN-9然後按字母順序排列,所以謝謝。 – user2631154