Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Ayuda con Consulta Anidada

Estas en el tema de Ayuda con Consulta Anidada en el foro de SQL Server en Foros del Web. Buenas, de nuevo por aca solicitando de ayuda. Resulta que en una tabla tengo los siguientes campos CuentaNº ValeNº TiendaNº 0001 0001 01 0001 0001 ...
  #1 (permalink)  
Antiguo 29/12/2008, 13:50
 
Fecha de Ingreso: diciembre-2008
Mensajes: 12
Antigüedad: 16 años
Puntos: 0
Ayuda con Consulta Anidada

Buenas, de nuevo por aca solicitando de ayuda.

Resulta que en una tabla tengo los siguientes campos

CuentaNº ValeNº TiendaNº

0001 0001 01
0001 0001 01

0002 0002 01
0002 0003 01

0003 0001 02
0003 0001 02

0003 0002 02
0004 0002 03

Necesito seleccionar unica y excluvamente los regitros repetidos,(en este caso los que estan de color ROJO)


hasta el momento tengo esta consulta, pero no me funciona ya que no me esta seleccionando lo que relamente necesito.

/************************************************** ***********

SELECT CuentaNº,ValeNº,TiendaNº FROM Detallecuantavaletienda WHERE ValeNº IN
(
SELECT ValeNº FROM Detallecuantavaletienda GROUP BY ValeNº HAVING COUNT(*) >1
)
AND
TiendaNº IN
(
SELECT TiendaNº FROM Detallecuantavaletienda GROUP BY TiendaNº HAVING COUNT(*) >1
)
ORDER BY CuentaNº,ValeNº,TiendaNº ASC

/************************************************** *******

De nuevo les agradezco por la colaboracion que me puedan brindar.
  #2 (permalink)  
Antiguo 29/12/2008, 14:02
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años
Puntos: 38
Respuesta: Ayuda con Consulta Anidada

Código:
SELECT  CuentaNº
       ,ValeNº
       ,TiendaNº 
FROM  Detallecuantavaletienda 
Group by 
        CuentaNº
       ,ValeNº
       ,TiendaNº 
HAVING COUNT(*) >1
ORDER BY CuentaNº, ValeNº, TiendaNº
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 29/12/2008, 14:14
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 20 años, 4 meses
Puntos: 6
Respuesta: Ayuda con Consulta Anidada

Andres, la respuesta creo que es un % de lo que quiere Julian, ya que tu select solo va a devolver un registro por cada duplicado, esto podría ser lo que desea:

Código:

Cita:
declare @table table(cuenta char(4), vale char(4), tienda char(2))

insert into @table values( '0001', '0001', '01' )
insert into @table values( '0001', '0001', '01' )
insert into @table values( '0002', '0002', '01' )
insert into @table values( '0002', '0003', '01' )
insert into @table values( '0003', '0001', '01' )
insert into @table values( '0003', '0001', '01' )
insert into @table values( '0003', '0002', '02' )
insert into @table values( '0004', '0002', '03' )


select t1.cuenta, t1.vale, t1.tienda
from ( select col1 = t.cuenta + t.vale + t.tienda, t.cuenta, t.vale, t.tienda
from @table t ) t1
where t1.col1 in ( select t2.cuenta + t2.vale + t2.tienda
from @table t2
GROUP BY t2.cuenta, t2.vale, t2.tienda
HAVING COUNT(*) > 1 )
Saludos cordiales
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD

Última edición por Thumper; 29/12/2008 a las 14:15 Razón: Falto saludo xd
  #4 (permalink)  
Antiguo 29/12/2008, 15:23
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años
Puntos: 38
Respuesta: Ayuda con Consulta Anidada

Si tienes razon, aunque eso de concatenar no me gusta mucho, tal vez seria mejor ponerlo como un inner join...


Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #5 (permalink)  
Antiguo 30/12/2008, 10:54
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 4 meses
Puntos: 39
Respuesta: Ayuda con Consulta Anidada

Es cierto lo que dice Andres.
Código sql:
Ver original
  1. DECLARE @TABLE TABLE(cuenta CHAR(4), vale CHAR(4), tienda CHAR(2))
  2.  
  3. INSERT INTO @TABLE VALUES( '0001', '0001', '01' )
  4. INSERT INTO @TABLE VALUES( '0001', '0001', '01' )
  5. INSERT INTO @TABLE VALUES( '0002', '0002', '01' )
  6. INSERT INTO @TABLE VALUES( '0002', '0003', '01' )
  7. INSERT INTO @TABLE VALUES( '0003', '0001', '02' )
  8. INSERT INTO @TABLE VALUES( '0003', '0001', '02' )
  9. INSERT INTO @TABLE VALUES( '0003', '0002', '02' )
  10. INSERT INTO @TABLE VALUES( '0004', '0002', '03' )
  11.  
  12. SELECT  T1.Cuenta,T1.Vale,T1.Tienda
  13. FROM  @TABLE T1
  14. INNER JOIN (
  15.     SELECT  Cuenta,Vale,Tienda
  16.     FROM  @TABLE
  17.     GROUP BY Cuenta,Vale,Tienda
  18.     HAVING COUNT(*) >1
  19. ) T2 ON T1.Cuenta=T2.Cuenta AND T1.Vale=T2.Vale AND T1.Tienda=T2.Tienda
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:07.