Pregunta
Tengo una base de datos de acceso de MS y necesitaría crear una consulta SQL que me permita seleccionar todas las entradas no distintas en una columna y al mismo tiempo mantener todos los valores.
En este caso, más que nunca, un ejemplo vale más que miles de palabras:
Tabla:
A B C
1 x q
2 y w
3 y e
4 z r
5 z t
6 z y
Magia SQL
Resultado:
B C
y w
y e
z r
z t
z y
Básicamente elimina todos los valores únicos de la columna B pero mantiene las múltiples filas de datos guardados. Puedo '' agrupar por b '' y luego '' contar > 1 '' para obtener lo que no es distinto, pero el resultado solo mostrará una fila de B, no las 2 o más que necesito.
¿Alguna ayuda?
Gracias.
Solución
Select B, C
From Table
Where B In
(Select B From Table
Group By B
Having Count(*) > 1)
Otros consejos
Otra forma de devolver los resultados que desea sería esta:
select *
from
my_table
where
B in
(select B from my_table group by B having count(*) > 1)
select
*
from
my_table t1,
my_table t2
where
t1.B = t2.B
and
t1.C != t2.C
-- apparently you need to use <> instead of != in Access
-- Thanks, Dave!
¿Algo así?
unir los valores únicos de B que determinó con group by by count > 1 de vuelta a la tabla original para recuperar los valores de C de la tabla.