Oracle
 sql >> Database >  >> RDS >> Oracle

ORACLE Select Distinct restituisce molte colonne e dove

Se selezionare solo queste 2 colonne (nome e col1) è sufficiente, puoi utilizzare:

select 
    distinct x.name, x.col1
  from table_name x
  where x.col1 = 2;

o

select 
    x.name, x.col1
  from table_name x
  where x.col1 = 2
  group by (x.name, x.col1);  

Nel caso in cui hai bisogno di tutti i valori ma non ti dispiace quale per i record multipli che soddisfano i tuoi criteri che ottieni (ad es. Dan 2 2 1 o Dan 2 1 3), puoi usarlo (registrerà il primo di quei record in base all'ordine per criteri):

select xx.name, xx.col1, xx.col2, xx.col3
  from (select 
      x.name, x.col1, x.col2, x.col3, dense_rank() over (partition by x.name order by x.name, x.col1, x.col2, x.col3) rnk
    from table_name x
    where x.col1 = 2) xx
  where xx.rnk = 1;