La parola chiave "DISTINCT" in SQL ha il significato di "valore univoco". Se applicato a una colonna in una query, restituirà tante righe dal set di risultati poiché esistono valori unici e diversi per tale colonna. Di conseguenza crea un insieme di risultati raggruppati ei valori di altre colonne sono casuali se non definiti da altre funzioni (come max, min, media, ecc.)
Se intendevi dire che vuoi restituire tutte le righe per quale Col006 ha un valore specifico, quindi utilizzare la clausola "where Col006 = value".
Se intendevi restituire tutte le righe per cui Col006 è diverso da tutti gli altri valori di Col006, devi comunque specificare quale valore è => vedere sopra.
Se si desidera dire che il valore di Col006 può essere valutato solo dopo aver recuperato tutte le righe, utilizzare la clausola "avendo Col006 = valore". Questo ha lo stesso effetto della clausola "where", ma "where" viene applicato quando le righe vengono recuperate dalle tabelle raw, mentre "having" viene applicato una volta che tutti gli altri calcoli sono stati fatti (cioè le funzioni di aggregazione sono state eseguite ecc.) e appena prima che il set di risultati venga restituito all'utente.
UPDATE:
Dopo aver visto la tua modifica, devo sottolineare che se si utilizza uno qualsiasi degli altri suggerimenti, si finirà con valori casuali in tutti gli altri 9 colonne per la riga che contiene il valore "item1" in Col006, a causa del vincolo più avanti nel mio post.
"Col006 è distinto" - rispetto a cosa? –
COL006 ha un valore quindi è distinto ovunque appaia. Intendi veramente "SELEZIONA DISTINTO COL006 DA TAB HAVING COUNT (*) = 1". –
In realtà, cosa intendi con questo, esattamente? – NinjaCat