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

Distinct y union ?

Estas en el tema de Distinct y union ? en el foro de SQL Server en Foros del Web. Hola tengo un dilema y es lo siguiente, suponemos que tenemos la TABLA PERSONA Código HTML: Id Nombre Titulacion Titulacion2 Titulacion3 1 Eduardo Oracle PW ...
  #1 (permalink)  
Antiguo 27/02/2009, 04:17
Avatar de triqui  
Fecha de Ingreso: diciembre-2008
Ubicación: Zaragoza(España)
Mensajes: 624
Antigüedad: 15 años, 5 meses
Puntos: 31
Distinct y union ?

Hola tengo un dilema y es lo siguiente, suponemos que tenemos la TABLA PERSONA

Código HTML:
Id    Nombre        Titulacion          Titulacion2          Titulacion3

1     Eduardo         Oracle                 PW                      PHP
2     Luisito            ASP                    PHP               SQL SERVER
3     Juanito           MySQL                PHP                       ASP
4     Sonia              Oracle            Office                 Oracle

Y quiero hacer una consulta para mostrar las titulaciones mas comunes de la tabla PERSONA y ordenadas, es decir una consulta que diera los siguientes resultados.

TITULACION NUMERO

PHP 3
Oracle 3
ASP 2

...ETC


Si por ejemplo hago.

SELECT Titulacion1, COUNT(*) AS Numero
FROM DIMPERSONAS
GROUP BY Titulacion1
ORDER BY Expr1 DESC

Me mostrará lo siguiente

Oracle 2
ASP 1
MySQL 1

Hasta aquí bien, pero no consigo que me lo haga del resto de columnas Titulacion2 y Titulacion3.
__________________________________________________ _

Lo que si consigo es que me muestre las distintas titulaciones, pero sin decirme cuantas hay de cada con lo siguiente.

SELECT DISTINCT Titulacion1
FROM PERSONAS
UNION
SELECT DISTINCT Titulacion2
FROM PERSONAS
UNION
SELECT DISTINCT Titulacion3
FROM PERSONAS

Alguna idea??

gracias
  #2 (permalink)  
Antiguo 27/02/2009, 09:53
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: Distinct y union ?

Creo que esto te puede servir:

declare @table table ( intID int, varNom varchar(50), varTit1 varchar(20), varTit2 varchar(20), varTit3 varchar(20) )
insert into @table values( 1, 'Eduardo', 'Oracle', 'PW', 'Office' )
insert into @table values( 2, 'Luisito', 'ASP', 'PHP', 'SQL SERVER' )
insert into @table values( 3, 'Juanito', 'MySQL', 'PHP', 'ASP' )
insert into @table values( 4, 'Sonia', 'Oracle', 'Office', 'Oracle' )

SELECT varTit, num = SUM(num)
FROM (
select pos = 'a', varTit = varTit1, num = count(*)
from @table
group by varTit1
UNION
select pos = 'b', varTit = varTit2, num = count(*)
from @table
group by varTit2
UNION
select pos = 'c', varTit = varTit3, num = count(*)
from @table
group by varTit3) Y
GROUP BY varTit
order by 2 desc

saludos
__________________
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
  #3 (permalink)  
Antiguo 27/02/2009, 14:59
Avatar de triqui  
Fecha de Ingreso: diciembre-2008
Ubicación: Zaragoza(España)
Mensajes: 624
Antigüedad: 15 años, 5 meses
Puntos: 31
Respuesta: Distinct y union ?

Que crack y que rapidez.

Me ha ido Perfecto y bastante optima que era muy importante.

Muchas gracias, me ahorraste mucho tiempo.

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 13:52.