Rechercher : dans
Par :

SQL doublon sur 2 champs concaténés

Dernière réponse le 5 aoû 2009 à 11:03:39 zouspinette5, le 13 nov 2006 à 17:21:02 
 Signaler ce message aux modérateurs

Bonjour,
je cherche à afficher les doublons de la concaténation des champs C_C21_PB et D_BUS de la table SP_OA_PB ; voici ma requête mais ça me renvoie un message d'erreur :

SELECT CONCAT(C_C21_PB, D_BUS) AS valeur,
FROM SP_OA_PB
GROUP BY valeur
HAVING COUNT(*)>1

Merci par avance de votre aide

Meilleures réponses pour « SQL doublon sur 2 champs concaténés » dans :
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...

1

oberion, le 13 nov 2006 à 17:23:17

Bonjour,

Ah ouais ? C'est étonnant... C'est quoi le message d'erreur exact ? Cdlt.

Répondre à oberion

2

zouspinette5, le 13 nov 2006 à 17:26:53

Le suivant :

ORA-00900: invalid SQL statement

franchement je sèche ...

merci !

Répondre à zouspinette5

3

kij_82, le 13 nov 2006 à 17:30:53

Il ne peut peut etre pas grouper sur une concaténation ?
~ iclic @ gauch,iclic, iclic @ droate, iclic, iclic
et ya pas de bôg môsieu ! ~

Répondre à kij_82

4

oberion, le 13 nov 2006 à 17:32:14

Essaye ca:
SELECT CONCAT(T1.C_C21_PB, T2.D_BUS) AS valeur, COUNT(*)
FROM SP_OA_PB T1, SP_OA_PB T2
GROUP BY valeur
HAVING COUNT(*)>1

En faisant une jointure sur la table elle meme. Peut etre qu'ORCL n'aime pas faire des concatenations sur une meme table et bosser dessus en plus.
Cdlt.

Répondre à oberion

5

zouspinette5, le 13 nov 2006 à 17:40:03

Toujours le même message... en fait le curseur se positionne sur le GROUP du GROUP BY et m'affiche le message cité ci-dessus...

pas bête la jointure mais ma requête est pourtant simple !!

enfin, merci comme même !

Répondre à zouspinette5

6

zouspinette5, le 14 nov 2006 à 10:43:31

Je n'ai pas compris pourquoi cela ne marchait pas mais voici une alternative qui est ok (si ça peut servir à quelqu'un)

SELECT [c_c21_pb
FROM PB_TAb
WHERE [c_c21_pb] In (SELECT [c_c21_pb] FROM [PB_TAb] As Tmp GROUP BY [c_c21_pb] HAVING Count(*)>1 )
ORDER BY [c_c21_pb];

Répondre à zouspinette5

7

SNlPERxFR, le 6 jui 2009 à 17:00:13

Si cela peut aider :

SELECT CONCAT(T1.C_C21_PB, T2.D_BUS) AS valeur, COUNT(*)
FROM SP_OA_PB T1, SP_OA_PB T2
GROUP BY CONCAT(T1.C_C21_PB, T2.D_BUS)
HAVING COUNT(*)>1

Répondre à SNlPERxFR

8

 lenouveau, le 5 aoû 2009 à 11:03:39

Bonjour, ça ne marche pas parce que tu as une virgule après l'alias dans ton select.

SELECT CONCAT(C_C21_PB, D_BUS) AS valeur,
FROM SP_OA_PB
GROUP BY valeur
HAVING COUNT(*)>1

Répondre à lenouveau