ayuda ...Jor-El query..

tatiana
07 de Marzo del 2006
Saludos a todos, si alguno de ustedes tiene algo de timpo para ayudarme, se los agradezco....Jor-El si estas por aqui.. me gustaria me ayudaras..

El siguiente query me sirvio para consultar de una base los registos duplicados.. ..ahora necesito de esos duplicados extraer los que esten duplicados de otro campo...he intentado hacer la sentencia pero no me queda.. ..

SELECT Served_MSISDN
|| '|' ||A_Number
|| '|' ||B_Number
|| '|' ||C_Number
|| '|' ||Company
|| '|' ||Region
|| '|' ||Call_Detail_ID
|| '|' ||Creation_Date
|| '|' ||Start_Time
|| '|' ||Direction
|| '|' ||Switch
|| '|' ||Home
|| '|' ||Home_Roam
|| '|' ||World_Number
|| '|' ||Cell_Site_ID
|| '|' ||Cell_Description
|| '|' ||Special_Number
|| '|' ||Special_Number_Free_Call
|| '|' ||Period
|| '|' ||Toll_Type
|| '|' ||LD_Carrier
|| '|' ||Original_Duration
|| '|' ||Rounded_Duration
|| '|' ||Air_Amount
|| '|' ||Tax_Air_Amount
|| '|' ||Roaming_Amount
|| '|' ||Tax_Roaming_Amount
|| '|' ||Long_Distance_Amount
|| '|' ||Tax_Long_Distance_Amount
|| '|' ||Total_Amount
|| '|' ||Service_Class
|| '|' ||Tax_Rate
|| '|' ||Number_Of_Sms
|| '|' ||Fully_Charged_Duration
|| '|' ||FAF_Indicator
|| '|' ||Campo36
from Detalle
where Call_Detail_Id=
(select Call_Detail_Id from detalle
group by Call_Detail_Id
having count(Call_Detail_Id)>1);

de el resultado de este query necesito extraer solo en los que se duplique el campo de Direction..


Ojala me haya explicado correctamente.. muchas gracias

Jor-El
07 de Marzo del 2006
Hola Tatiana ¡ ¡¡
Ufff, me has pillado en frio, a ver si te sirve esto.
Si no te sirve me lo dices y mañana te lo miro con mas calma, es que ahora estoy espesito, acabo de venir de cenar con unos amigos y ya sabes lo que pasa.


select COUNT(*),DirectioN
FROM
(
SELECT Served_MSISDN
|| '|' ||A_Number
|| '|' ||B_Number
|| '|' ||C_Number
|| '|' ||Company
|| '|' ||Region
|| '|' ||Call_Detail_ID
|| '|' ||Creation_Date
|| '|' ||Start_Time
|| '|' ||Direction
|| '|' ||Switch
|| '|' ||Home
|| '|' ||Home_Roam
|| '|' ||World_Number
|| '|' ||Cell_Site_ID
|| '|' ||Cell_Description
|| '|' ||Special_Number
|| '|' ||Special_Number_Free_Call
|| '|' ||Period
|| '|' ||Toll_Type
|| '|' ||LD_Carrier
|| '|' ||Original_Duration
|| '|' ||Rounded_Duration
|| '|' ||Air_Amount
|| '|' ||Tax_Air_Amount
|| '|' ||Roaming_Amount
|| '|' ||Tax_Roaming_Amount
|| '|' ||Long_Distance_Amount
|| '|' ||Tax_Long_Distance_Amount
|| '|' ||Total_Amount
|| '|' ||Service_Class
|| '|' ||Tax_Rate
|| '|' ||Number_Of_Sms
|| '|' ||Fully_Charged_Duration
|| '|' ||FAF_Indicator
|| '|' ||Campo36 CADENA,
direction
from Detalle
where Call_Detail_Id=
(select Call_Detail_Id from detalle
group by Call_Detail_Id
having count(Call_Detail_Id)>1)
)
group by direction
HAVING COUNT(*) > 1

Con esto creo que te saldrían todas las direcciones repetidas de tu mega-query

Mira a ver si te vale y si no mañana buscamos otra forma.

Un saludin


tatiana
07 de Marzo del 2006
Que bien.. que envidia.. pero de la buena...

espero mañana si tengas algo de tiempo..


ERROR en línea 43:
ORA-01427: single-row subquery returns more than one row

de cualquier forma te agradezco.

Jor-El
07 de Marzo del 2006
Buenos dias.

Vale, ya tenemos algo. Lo que te está dando error es esto :

where Call_Detail_Id=
(select Call_Detail_Id from detalle
group by Call_Detail_Id
having count(Call_Detail_Id)>1)

Esta sub-select te devuelve mas de una fila. Como no sé exactamente los datos que tienes y algo mas, vamos por partes.

Cambia esto : Call_Detail_Id= (select .......

Por esto otro : Call_Detail_Id in (select .......

A ver que pasa y me cuentas, pero de momento nos quitamos el error que me pones.

Si no te vale, a ver si puedo esta tarde agregarte al msn y hablamos on-line. Aunque no sé exactamente la diferencia horaria entre tu pais y el mio.

Suerte.