SQL doublon sur 2 champs concaténés [Résolu/Fermé]

Signaler
Messages postés
16
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
19 février 2008
-
 lenouveau -
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

4 réponses

Messages postés
1253
Date d'inscription
mardi 26 septembre 2006
Statut
Membre
Dernière intervention
29 septembre 2007
248
Bonjour,

Ah ouais ? C'est étonnant... C'est quoi le message d'erreur exact ?
Messages postés
16
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
19 février 2008
1
le suivant :

ORA-00900: invalid SQL statement

franchement je sèche ...

merci !
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
850 >
Messages postés
16
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
19 février 2008

Il ne peut peut etre pas grouper sur une concaténation ?
Messages postés
1253
Date d'inscription
mardi 26 septembre 2006
Statut
Membre
Dernière intervention
29 septembre 2007
248
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.
Messages postés
16
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
19 février 2008
1
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 !
Messages postés
16
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
19 février 2008
1 >
Messages postés
16
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
19 février 2008

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];
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
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