SQL doublon sur 2 champs concaténés

Résolu/Fermé
zouspinette5 Messages postés 16 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 19 février 2008 - 13 nov. 2006 à 17:21
 lenouveau - 5 août 2009 à 11:03
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

oberion Messages postés 1253 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 29 septembre 2007 249
13 nov. 2006 à 17:23
Bonjour,

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

ORA-00900: invalid SQL statement

franchement je sèche ...

merci !
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 856 > zouspinette5 Messages postés 16 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 19 février 2008
13 nov. 2006 à 17:30
Il ne peut peut etre pas grouper sur une concaténation ?
0
oberion Messages postés 1253 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 29 septembre 2007 249
13 nov. 2006 à 17:32
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.
0
zouspinette5 Messages postés 16 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 19 février 2008 1
13 nov. 2006 à 17:40
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 !
0
zouspinette5 Messages postés 16 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 19 février 2008 1 > zouspinette5 Messages postés 16 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 19 février 2008
14 nov. 2006 à 10:43
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];
0
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
0
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
0