PDA

Ver la Versión Completa : Duda Consulta Sql Server...ayuda!!!


silver46
09-01-2008, 23:07:28
buenas. A ver si logro que se m entienda. Teng que realizar un trabajo cn SQL SERVER. una d las consultas que tengo que hacer me ha llevado a esta situacion:
realizo una UNION de dos tablas, que me deja algo asi:

TABLA 1

columna1 columna2
10 14
10 8
45 4
45 3
45 12
54 5
54 42
y querria obtener la suma de la columna 2 para cada elemento de la columna 1:

TABLA 2

columna1 columna2
10 22
45 19
54 47

lo he intentado hacer de esta forma, pero no m funciona:

SELECT columna1, sum(columna2)
FROM (la tabla 1, pongo directamente la union aqui)
GROUP BY columna1;

el caso es q me da error, y creo que es por poner la union de tablas en el FROM.alguien sabe si se podria solucionar???ya se que la pregunta tiene tela...
un saludo y gracias para el k konteste:cool:

juanelo
09-01-2008, 23:38:48
Que tal,
Antes que nada bienvenido al club, te recomiendo que leas la guia de estilo.

intenta con esto


SELECT COL1, sum(COL2)
FROM TABLA
GROUP BY COL1
ORDER BY COL2 // <-- opcional

silver46
09-01-2008, 23:57:15
HOLA JUANELO, GRACIAS POR TU CONTESTACION.NO M FUNCIONA. MIRA TE DEJO AQUI LO QUE TENGO HECHO, APOYANDOSE EN LO PRIMERO QUE ESCRIBI EN EL POST.

SELECT Socio,Sum(BS)
FROM (SELECT Socio,COUNT(*) AS 'BS'
FROM alquila_b
GROUP BY Socio
UNION
SELECT Socio,COUNT(*) AS 'P'
FROM alquila_p
GROUP BY Socio)
GROUP BY Socio;

LA UNION POR SI SOLA SI ME FUNCIONA, EL PROBLEMA ES CUANDO LA INCORPORO A ESE FROM DE LA CONSULTA "MAS EXTERIOR". EL ERROR QUE M INDICA EL SQL SERVER ES ESTE:
Sintaxis incorrecta cerca de la palabra clave 'GROUP'.
QUIZAS DEBERÍA PLANTEAR EL PROBLEMA DE OTRA MANERA PARA SUMAR ENTRE SI LA SEGUNDA COLUMNA...
BUENO GRACIAS Y UN SALUDO.

juanelo
09-01-2008, 23:59:10
Quiero ver si entendi bien, lo que quieres es sumar una columna de una tabla guiandote o tomando como pivote otra?

juanelo
10-01-2008, 00:01:00
Por cierto, que manejador de base de datos usas?

silver46
10-01-2008, 00:12:47
BUENO, MAS CONCRETAMENTE:
EL TRABAJO TRATA SOBRE UNA FILMOTECA. TENGO QUE OBTENER EL Nº DE ALQUILERES EN TOTAL POR CADA SOCIO, ES DECIR LOS ALQUILERES DE BANDAS SONORAS (TABLA alquila_b) MÁS LOS DE PELICULAS (TABLA alquila_p). ENTONCES YO PENSE EN CONTAR LOS ALQUILERES DE CADA TABLA POR SEPARADO (Nº ALQUILERES DE BS PARA CADA SOCIO, Y DE PELICULAS PARA CADA SOCIO) Y UNIRLAS CON UNION. AHI ES DONDE OBTENGO ESTO (tal cual lo muestro aqui)
Socio BS
10 14
10 8
45 4
45 12
54 5
54 42

Y AHORA, EMPLEANDO ESA TABLA PRETENDO SUMAR LOS ALQUILERES DE CADA SOCIO (14+8 PARA EL SOCIO 10, 4+12 PARA EL 45, ETC.)

LA VERDAD QUE NO SE COMO EXPLICARLO, ES COMPLICADO.YA ESTOY PROBANDO COSAS QUE NO TIENEN SENTIDO, QUE SEGURO QUE ES CON LO QUE TE HE CONFUNDIDO SEGURO JEJE
SALUDOS

silver46
10-01-2008, 00:16:48
Por cierto, que manejador de base de datos usas?
ES EL SQL SERVER 2005, MANAGEMENT STUDIO EXPRESS....

juanelo
10-01-2008, 00:24:02
Lo que puedes hacer es una tabla temporal con el resultado intermedio que me inidicas:
Socio BS
10 14
10 8
45 4
45 12
54 5
54 42

De ahi, haces un simple query como el que te puse al principio
SELECT COL1, sum(COL2)
FROM TABLA_TEMPORAL
GROUP BY COL1
ORDER BY COL2 // <-- opcional Por ultimo cuando dejes de usar la tabla temporal la borras y listo.

sinalocarlos
10-01-2008, 02:42:11
podría compañero forista subir la estructura de las tablas que te generan la consulta que quieres resumir?

Neftali [Germán.Estévez]
10-01-2008, 10:15:38
Se me ocurre que puedes crear una Vista (View) con la UNION y luego realizar la consulta de la suma sobre la Vista.

El código de la vista sería algo así:

SELECT * FROM Tabla1
UNION
SELECT * FROM Tabla2



Si a la vista le llamas Tabla3, para obetener el resultado que necesitas basta con:


Select campo1, SUM(campo2) from Tabla3
Group BY campo1


Un saludo.

silver46
10-01-2008, 15:02:34
Se me ocurre que puedes crear una Vista (View) con la UNION y luego realizar la consulta de la suma sobre la Vista.

El código de la vista sería algo así:
Código SQL [-] (http://www.clubdelphi.com/foros/#)SELECT * FROM Tabla1
UNION SELECT * FROM Tabla2



Si a la vista le llamas Tabla3, para obetener el resultado que necesitas basta con:

Código SQL [-] (http://www.clubdelphi.com/foros/#)Select campo1, SUM(campo2) from Tabla3
Group BY campo1


Un saludo.


SII!! MUCHAS GRACIAS NEFTALI, HE CREADO LA VISTA Y YA CON ESO VA PERFECTO.
MUCHAS GRACIAS A TODOS, SEGURO Q VUELVO A PREGUNTAR ALGO.:)

silver46
12-01-2008, 17:09:18
Buenas De Nuevo...antes D Abrir Otro Hilo Para Una Nueva Pregunta, Lo Pongo Aqui A Ver Si Me Podeis Contestar. El Tema Es El Uso De Triggers Para Sql Server 2005, Conoceis Por Internet Algun Tutorial?? La Verdad Que No Encuentro Nada Que Me Convenza...
Saludos!

Neftali [Germán.Estévez]
13-01-2008, 22:34:04
Prueba con la ayuda de SQL Server para empezar.