Domanda

Ho un tavolo con colonne A, B, C e mi piacerebbe ricevere tutte le combinazioni di record aventi {B, c} unico. Questo è sia il valore B che il valore C apparirà solo una volta in un set.

Hai qualche idea come ottenere questo?Suppongo che l'output debba contenere una combinazione su una singola riga, che non è un problema.

Per chiarire qui è un esempio:

    .
  • 1,1,0
  • 6,1,1
  • 1,1,2
  • 3,2,0
  • 5,2,1
  • 1,2,3

Una possibile combinazione è {1,1,0}, {1,2,3}, mentre {6,1,1}, {5,2,1}, perché il valore della colonna C "1'Non è unico.Quello che mi piacerebbe ottenere è un tale output:

1,1,0,1,2,3

6,1,1,1,2,3
.

Iow L'uscita sarà N-Tuples avente B, C Valori univoci.

È stato utile?

Soluzione

Penso che tu voglia uno strano Verson di un self-join:

select t1.*, t2.*
from table t1 join
     table t2
     on t1.b <> t2.b and t1.c <> t2.c;
.

Ciò restituirà tutte le coppie dalla tabella in cui le colonne b hanno valori distinti e le colonne c hanno valori distinti.

Altri suggerimenti

Questo è il gruppo per cui è.Combina tutti i record con gli stessi valori nel gruppo tramite elenco in una singola riga.

select B, C
from my_table
group by B, C
.

La domanda è un po 'vaga, se si desidera solo i valori della soluzione di utilizzo B & C di @llinger, se si desidera tutti i campi per i record che hanno una combinazione B, C che si verifica in quel record ma da nessun'altra parte, utilizzare

SELECT MAX(A),B,C FROM T
GROUP BY B,C
HAVING COUNT(*) = 1
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top