Le mot clé "DISTINCT" dans SQL a la signification de "valeur unique". Lorsqu'il est appliqué à une colonne dans une requête, il retournera autant de lignes du jeu de résultats comme il y a des valeurs uniques, différentes pour cette colonne. Par conséquent, il crée un ensemble de résultats groupés et les valeurs des autres colonnes sont aléatoires sauf si elles sont définies par d'autres fonctions (telles que max, min, average, etc.)
Si vous vouliez dire que vous souhaitez renvoyer toutes les lignes pour Col006 a une valeur spécifique, puis utilisez la clause "where Col006 = value". Si vous vouliez dire que vous voulez retourner toutes les lignes pour lesquelles Col006 est différent de toutes les autres valeurs de Col006, alors vous devez toujours spécifier quelle est cette valeur => voir ci-dessus.
Si vous voulez dire que la valeur de Col006 ne peut être évaluée qu'une fois que toutes les lignes ont été récupérées, utilisez la clause "ayant Col006 = valeur". Cela a le même effet que la clause "where", mais "where" est appliqué lorsque les lignes sont extraites des tables brutes, alors que "having" est appliqué une fois que tous les autres calculs ont été faits (ie fonctions d'agrégation ont été exécutées etc.) et juste avant que l'ensemble de résultats ne soit retourné à l'utilisateur.
MISE À JOUR:
Après avoir vu votre édition, je dois souligner que si vous utilisez l'un des autres suggestions, vous allez vous retrouver avec des valeurs aléatoires dans toutes les autres 9 colonnes pour la ligne qui contient la valeur "item1" dans Col006, en raison de la contrainte plus haut dans mon message.
"Col006 est distinct" - comparé à quoi? –
COL006 a une valeur donc il est distinct partout où il apparaît. Voulez-vous vraiment dire "SELECT DISTINCT COL006 FROM TAB AYANT COMPTE (*) = 1". –
En fait, qu'est-ce que vous entendez par là, exactement? – NinjaCat