SQL - sumar segun un campo sobre un select

   
Vista:

sumar segun un campo sobre un select

Publicado por Oscar (7 intervenciones) el 23/06/2016 20:59:38
Buenas tardes.
Hace unso dias escribi un mensaje. Aprovecho para recordaros que estoy comenzando con esto del sql. Casi podria decir que "jugando" con ello.
Consultando manuales voy haciendo pequeños avances pero he llegado a un punto donde me he atascado y necesito ayuda. Espero que me podais dar el codigo que necesito y que yo sea capaz de entenderlo cuando lo vea.

Expongo la situacion que tengo...

He conseguido la seleccion de una serie de campos que necesito a traves de un select (que lo mio me ha costado, aun con ayuda...).
Ahora, sobre ese select necesito hacer una suma de determinadas cantidades y que me muestre el resultado.
Voy a poner un resultado de mi select y el resultado que necesito obtener

OT......Referencia......Cantidad.......Lote.......Almacen
A 002020 10 100 122
A 002020 10 101 122
A 002020 3 102 007
B 003030 8 126 122
B 003030 6 127 122
B 003030 1 128 007
C 004040 12 134 122


Quiero que me sume las cantidades (por almacenes) donde haya coincidencia del campo OT y que me devuelva esto (el lote es prescindible, de hecho no recuerdo cual era el objetivo de mostrarle)

OT......Referencia......Cantidad.......Almacen
A 002020 20 122
A 002020 3 007
B 003030 14 122
B 003030 1 007
C 004040 12 122

He conseguido hacer la suma total pero no se como sumar segun lo que he expuesto. Tengo la sensacion de que he estado cerca de conseguirlo pero mis neuronas ya se han rendido.

Gracias por adelantado

PD: puede dividir la consulta en varias (tantas como almacenes tengo) y hacer los sumatorios en cada una si con ello se puede simplificar el codigo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

sumar segun un campo sobre un select

Publicado por DAVID (23 intervenciones) el 24/06/2016 09:38:19
Hola,
La select que necesitarias seria algo asi:
1
2
3
select ot,referencia,almacen, sum(cantidad)
from almacenes
group by ot,referencia,almacen


Un saludo,
David
soluciones web
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

sumar segun un campo sobre un select

Publicado por oscar (7 intervenciones) el 24/06/2016 14:56:01
Lo he conseguido despues de algun pequeño contratiempo
Pongo el codigo exacto que he utilizado porque tengo una duda que me tiene loco...

SELECT OT,referencia, sum(Q_Lote) AS Q_total, almacen
from
(
SELECT orden_trabajo AS OT, bat.manufacturingReference AS Referencia, initialQuantity AS Q_Lote, Rmo.store AS Almacen FROM dbo.batch Bat
INNER JOIN dbo.ReferenceMovement Rmo ON Bat.batch = Rmo.batch
INNER JOIN Maldivas_Oran.Logistica.Articulos_lotes Lot ON Lot.Lote_externo = Bat.batchIdentifier
where Rmo.movementType = '4' --and rmo.store = '007'
and Lot.Orden_trabajo in (select Orden_trabajo from dbo.CustomQuantityByOrder)
) as x
group by almacen, referencia, OT



lo que no entiendo es porque me obliga a poner "as x" antes de agrupar
otra duda que tengo es porque me obliga a agrupar por todos los campos que le estoy pidiendo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

sumar segun un campo sobre un select

Publicado por Isaias (690 intervenciones) el 24/06/2016 20:20:03
No se cual sea tu nivel en SQL, pero te contesto

lo que no entiendo es porque me obliga a poner "as x" antes de agrupar

R= Ya que esta utilizando un SUBSELECT, este, debe tener un NOMBRE, para hacer referencia a el, en tu caso, le pusiste "x", pero pudiste utilizar un nombre como: FACTURAS, VENTAS, REGISTROS, etc.

otra duda que tengo es porque me obliga a agrupar por todos los campos que le estoy pidiendo

R= Ya que estas haciendo una SUMA de Q_Lote, esta debe saber porque campos agrupara y los campos que tu escogiste son: OT, almacen y referencia, entonces, debe ir forzosamente un GROUP BY, por los campos que componen el SELECT.

Para saber mas:

https://msdn.microsoft.com/en-us/library/ms177673.aspx
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

sumar segun un campo sobre un select

Publicado por Oscar (7 intervenciones) el 24/06/2016 20:29:37
mi nivel es de princiante autodidacta, supongo que las preguntas pueden parecer un poco tontas
las respuestas que me das son las que me esperaba. eso significa que lo voy entendiendo y que estoy en el buen camino

gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

sumar segun un campo sobre un select

Publicado por Isaias (690 intervenciones) el 24/06/2016 21:39:10
Pues no se si este en buen camino, faltaria darle tuning a su script, ¿en que motor de base de datos trabaja?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

sumar segun un campo sobre un select

Publicado por OSCAR (7 intervenciones) el 24/06/2016 22:10:34
me estas preguntando algo que se escapa a mi conocimiento

intento ponerte en contexto asi de forma rapida... soy electricista y electronico. en la empresa donde trabajo me dedico a programar robots y automatas; ademas de esto administro un programa MES (captacion de datos en planta a traves de automatas y gestionado con BBDD desde un server central)

como puedes ver no soy informatico ni he estudiado informatica

esto de aprender SQL se debe a que el programa ge administro funciona con BBDD que se pueden tratar desde SQL y a veces para localizar un error "manualmente" tardo un par de horas mientras que con consultas de SQL no tardo practicamente. obtengo una tabla y rapidamente localizo el problema

no necesito ser un superexperto de programacion en SQL ni mejorar el rendimiento de una consulta para que tarde 3 segundos en lugar de 12 segundos, simplemente ser capaz de explotar datos de forma puntual

seguramente no sea la mejor forma de aprender para llegar a un nivel alto o para optimizar procesos, pero es que esos no son mis objetivos ahora mismo

Quizas mas adelante...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

sumar segun un campo sobre un select

Publicado por Isaias (690 intervenciones) el 24/06/2016 22:55:31
Sin subquery, sin IN

1
2
3
4
5
6
7
8
9
10
SELECT orden_trabajo AS OT
,bat.manufacturingReference AS referencia
,Rmo.store AS almacen
,SUM(initialQuantity) AS Q_Lote
FROM dbo.batch Bat
INNER JOIN dbo.ReferenceMovement Rmo ON Bat.batch = Rmo.batch
INNER JOIN Maldivas_Oran.Logistica.Articulos_lotes Lot ON Lot.Lote_externo = Bat.batchIdentifier
where Rmo.movementType = '4' AND
Lot.Orden_trabajo EXISTS(select Orden_trabajo from dbo.CustomQuantityByOrder a WHERE a.Orden_trabajo = Lot.Orden_trabajo)
GROUP BY orden_trabajo, Rmo.store, bat.manufacturingReference
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar