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

Como sumar 2 columnas de una misma linea

Estas en el tema de Como sumar 2 columnas de una misma linea en el foro de SQL Server en Foros del Web. Hola, Lo que quiero, es sumar 2 columnas de una misma linea pero en determinada condicion. Es decir, tengo la siguiente consulta bastante sencilla: @import ...
  #1 (permalink)  
Antiguo 21/10/2013, 11:41
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 17 años
Puntos: 2
Como sumar 2 columnas de una misma linea

Hola,
Lo que quiero, es sumar 2 columnas de una misma linea pero en determinada condicion.
Es decir, tengo la siguiente consulta bastante sencilla:
Código SQL:
Ver original
  1. SELECT * FROM protri01
  2. WHERE PedPipsa = '2070713' AND
  3. PedPipsa2 = '2070713' AND
  4. PedPipsa3 = '2070713' AND
  5. PedPipsa4 = '2070713' AND
  6. PedPipsa5 ='2070713' AND
  7. PedPipsa6 = '2070713' AND
  8. PedPipsa7 = '2070713' AND
  9. PedPipsa8 = '2070713' AND
  10. PedPipsa9 = '2070713'
Lo cual retorna:

Como se ve en la imagen tengo en Ton8 y Ton9 un valor de 5. Lo que quiere decir que son en total 10 toneladas, ambas de un corte8 y corte9 de 63.5 centimetros,
Lo que quiero es sumar estas cantidades y mostrarlas en una sola columna de salida, siempre y cuando se cumpla esta condicion
  #2 (permalink)  
Antiguo 21/10/2013, 11:49
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Como sumar 2 columnas de una misma linea

Código SQL:
Ver original
  1. SELECT *,
  2. CASE WHEN corte8=corte9 THEN Ton8+Ton9  END AS toneladas
  3.  FROM protri01
  4. WHERE PedPipsa = '2070713' AND
  5. PedPipsa2 = '2070713' AND
  6. PedPipsa3 = '2070713' AND
  7. PedPipsa4 = '2070713' AND
  8. PedPipsa5 ='2070713' AND
  9. PedPipsa6 = '2070713' AND
  10. PedPipsa7 = '2070713' AND
  11. PedPipsa8 = '2070713' AND
  12. PedPipsa9 = '2070713'

algo asi??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 21/10/2013, 12:58
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 17 años
Puntos: 2
Respuesta: Como sumar 2 columnas de una misma linea

Libras, amo cuando me contestas asi de rapido xd
Muchas gracias, si funciona, pero otra duda, en realidad esa condicion la quiero integrar en mi siguiente consulta:
Código SQL:
Ver original
  1. SELECT TRIM,Corte1,UMC1,SUM(Ton1)Ton1,Descripcion,Id_Contenedor,Ancho,UAncho,TrimCorte,Peso,Rollos FROM(
  2.  
  3. SELECT DISTINCT TRIM,Corte1,UMC1,Ton1 FROM protri01 WHERE PedPipsa1 = '2070713'
  4. UNION SELECT DISTINCT  TRIM,Corte2,UMC2,Ton2 FROM protri01 WHERE PedPipsa2 ='2070713'
  5. UNION SELECT DISTINCT TRIM,Corte3,UMC3,Ton3 FROM protri01 WHERE PedPipsa3 = '2070713'
  6. UNION SELECT DISTINCT  TRIM,Corte4,UMC4,Ton4 FROM protri01 WHERE PedPipsa4 ='2070713'
  7. UNION SELECT DISTINCT TRIM,Corte5,UMC5,Ton5 FROM protri01 WHERE PedPipsa5 = '2070713'
  8. UNION SELECT DISTINCT TRIM,Corte6,UMC6,Ton6 FROM protri01 WHERE PedPipsa6 ='2070713'
  9. UNION SELECT DISTINCT TRIM,Corte7,UMC7,Ton7 FROM protri01 WHERE PedPipsa7 = '2070713'
  10. UNION SELECT DISTINCT TRIM,Corte8,UMC8,Ton8 FROM protri01 WHERE PedPipsa8 ='2070713'
  11. UNION SELECT DISTINCT TRIM,Corte9,UMC9,Ton9 FROM protri01 WHERE PedPipsa9 = '2070713'
  12. UNION SELECT DISTINCT TRIM,Corte10,UMC10,Ton10 FROM protri01 WHERE PedPipsa10 ='2070713'
  13. UNION SELECT DISTINCT TRIM,Corte11,UMC11,Ton11  FROM protri01 WHERE PedPipsa11 = '2070713'
  14. UNION SELECT DISTINCT TRIM,Corte12,UMC12,Ton12 FROM protri01 WHERE PedPipsa12 ='2070713' ) C
  15. INNER JOIN
  16. (SELECT DISTINCT Descripcion,Id_Contenedor,Ancho,UAncho,TRIM AS TrimCorte,SUM(Peso) Peso ,COUNT(Id_Lote) Rollos
  17. FROM    prolot01  A INNER JOIN  catpap01 B ON B.Id_Papel = A.Id_Papel
  18. WHERE   PedidoPIPSA= '2070713'AND Peso > 0 AND DevProd = 0 AND Jagenberg = 0 AND Detenido = 0 AND Rechazado = 0
  19. GROUP BY Id_Contenedor,Ancho,UAncho,A.TRIM,B.Descripcion)D
  20. ON  C.TRIM = D.TrimCorte AND Corte1 = Ancho AND UMC1 = UAncho  GROUP BY TRIM,Corte1,UMC1,Descripcion,Id_Contenedor,Ancho,UAncho,TrimCorte,Peso,Rollos

Cuando ejecuto esta query, que es la que realmente necesito, me regresa lo siguiente:
lo cual me retorna solo 5 toneladas de 63.5 cm, pero quiero que ahi me de el total, es decir, en lugar de 5 que me muestre los 10 que enrealidad existen.
Sabes como hacerlo? :(
edit:
Si lo meto asi:
Código SQL:
Ver original
  1. SELECT TRIM,Corte1,UMC1,SUM(Ton1)Ton1,Descripcion,Id_Contenedor,Ancho,UAncho,TrimCorte,Peso,Rollos FROM(
  2.  
  3. SELECT DISTINCT TRIM,Corte1,UMC1,Ton1 FROM protri01 WHERE PedPipsa1 = '2070713'
  4. UNION SELECT DISTINCT  TRIM,Corte2,UMC2,Ton2 FROM protri01 WHERE PedPipsa2 ='2070713'
  5. UNION SELECT DISTINCT TRIM,Corte3,UMC3,Ton3 FROM protri01 WHERE PedPipsa3 = '2070713'
  6. UNION SELECT DISTINCT  TRIM,Corte4,UMC4,Ton4 FROM protri01 WHERE PedPipsa4 ='2070713'
  7. UNION SELECT DISTINCT TRIM,Corte5,UMC5,Ton5 FROM protri01 WHERE PedPipsa5 = '2070713'
  8. UNION SELECT DISTINCT TRIM,Corte6,UMC6,Ton6 FROM protri01 WHERE PedPipsa6 ='2070713'
  9. UNION SELECT DISTINCT TRIM,Corte7,UMC7,Ton7 FROM protri01 WHERE PedPipsa7 = '2070713'
  10. UNION SELECT DISTINCT TRIM,Corte8,UMC8,Ton8+Ton9 AS Ton8 FROM protri01 WHERE PedPipsa8 ='2070713'
  11. --union select distinct Trim,Corte9,UMC9,Ton9 from protri01 where PedPipsa9 = '2070713'
  12. UNION SELECT DISTINCT TRIM,Corte10,UMC10,Ton10 FROM protri01 WHERE PedPipsa10 ='2070713'
  13. UNION SELECT DISTINCT TRIM,Corte11,UMC11,Ton11  FROM protri01 WHERE PedPipsa11 = '2070713'
  14. UNION SELECT DISTINCT TRIM,Corte12,UMC12,Ton12 FROM protri01 WHERE PedPipsa12 ='2070713' ) C
  15. INNER JOIN
  16. (SELECT DISTINCT Descripcion,Id_Contenedor,Ancho,UAncho,TRIM AS TrimCorte,SUM(Peso) Peso ,COUNT(Id_Lote) Rollos
  17. FROM    prolot01  A INNER JOIN  catpap01 B ON B.Id_Papel = A.Id_Papel
  18. WHERE   PedidoPIPSA= '2070713'AND Peso > 0 AND DevProd = 0 AND Jagenberg = 0 AND Detenido = 0 AND Rechazado = 0
  19. GROUP BY Id_Contenedor,Ancho,UAncho,A.TRIM,B.Descripcion)D
  20. ON  C.TRIM = D.TrimCorte AND Corte1 = Ancho AND UMC1 = UAncho  GROUP BY TRIM,Corte1,UMC1,Descripcion,Id_Contenedor,Ancho,UAncho,TrimCorte,Peso,Rollos
Observe la linea 10, si hago esto si me da total 10, pero quiero condicionar, que lo haga cuando la medida sea igual. Tal como el primer ejemplo

Última edición por th3r0rn; 21/10/2013 a las 13:15
  #4 (permalink)  
Antiguo 21/10/2013, 13:15
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Como sumar 2 columnas de una misma linea

Código SQL:
Ver original
  1. SELECT TRIM,Corte1,UMC1,SUM(Ton1)Ton1,Descripcion,Id_Contenedor,Ancho,UAncho,TrimCorte,Peso,Rollos,
  2. CASE WHEN corte8=corte9 THEN Ton8+Ton9  END AS toneladas
  3. FROM(
  4.  
  5. SELECT DISTINCT TRIM,Corte1,UMC1,Ton1 FROM protri01 WHERE PedPipsa1 = '2070713'
  6. UNION SELECT DISTINCT  TRIM,Corte2,UMC2,Ton2 FROM protri01 WHERE PedPipsa2 ='2070713'
  7. UNION SELECT DISTINCT TRIM,Corte3,UMC3,Ton3 FROM protri01 WHERE PedPipsa3 = '2070713'
  8. UNION SELECT DISTINCT  TRIM,Corte4,UMC4,Ton4 FROM protri01 WHERE PedPipsa4 ='2070713'
  9. UNION SELECT DISTINCT TRIM,Corte5,UMC5,Ton5 FROM protri01 WHERE PedPipsa5 = '2070713'
  10. UNION SELECT DISTINCT TRIM,Corte6,UMC6,Ton6 FROM protri01 WHERE PedPipsa6 ='2070713'
  11. UNION SELECT DISTINCT TRIM,Corte7,UMC7,Ton7 FROM protri01 WHERE PedPipsa7 = '2070713'
  12. UNION SELECT DISTINCT TRIM,Corte8,UMC8,Ton8 FROM protri01 WHERE PedPipsa8 ='2070713'
  13. UNION SELECT DISTINCT TRIM,Corte9,UMC9,Ton9 FROM protri01 WHERE PedPipsa9 = '2070713'
  14. UNION SELECT DISTINCT TRIM,Corte10,UMC10,Ton10 FROM protri01 WHERE PedPipsa10 ='2070713'
  15. UNION SELECT DISTINCT TRIM,Corte11,UMC11,Ton11  FROM protri01 WHERE PedPipsa11 = '2070713'
  16. UNION SELECT DISTINCT TRIM,Corte12,UMC12,Ton12 FROM protri01 WHERE PedPipsa12 ='2070713' ) C
  17. INNER JOIN
  18. (SELECT DISTINCT Descripcion,Id_Contenedor,Ancho,UAncho,TRIM AS TrimCorte,SUM(Peso) Peso ,COUNT(Id_Lote) Rollos
  19. FROM    prolot01  A INNER JOIN  catpap01 B ON B.Id_Papel = A.Id_Papel
  20. WHERE   PedidoPIPSA= '2070713'AND Peso > 0 AND DevProd = 0 AND Jagenberg = 0 AND Detenido = 0 AND Rechazado = 0
  21. GROUP BY Id_Contenedor,Ancho,UAncho,A.TRIM,B.Descripcion)D
  22. ON  C.TRIM = D.TrimCorte AND Corte1 = Ancho AND UMC1 = UAncho  GROUP BY TRIM,Corte1,UMC1,Descripcion,Id_Contenedor,Ancho,UAncho,TrimCorte,Peso,Rollos
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 21/10/2013, 13:37
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 17 años
Puntos: 2
Respuesta: Como sumar 2 columnas de una misma linea

:(
Código:
Msg 207, Level 16, State 1, Line 51
Invalid column name 'Corte8'.
Msg 207, Level 16, State 1, Line 51
Invalid column name 'Corte9'.
Msg 207, Level 16, State 1, Line 51
Invalid column name 'Ton8'.
Msg 207, Level 16, State 1, Line 51
Invalid column name 'Ton9'.
  #6 (permalink)  
Antiguo 21/10/2013, 13:42
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Como sumar 2 columnas de una misma linea

tu query regresa varias columnas, no se cuales son los nombres de las mismas, en lugar de los nombres que puse usa los nombres de las columnas que necesitas y listo :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 21/10/2013, 13:55
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 17 años
Puntos: 2
Respuesta: Como sumar 2 columnas de una misma linea

Pero loa nombres estan bien, en realdiad si existe Corte8 y Corte9
Lo que segun entiendo, esta dando error porque no las encuentra deauerdo a la consulta, es decior no la reconoce por donde fue puesta la condicion:
  #8 (permalink)  
Antiguo 21/10/2013, 14:22
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Como sumar 2 columnas de una misma linea

Nop tu razonamiento esta mal :P, lo que pasa es que las columnas corte8 y corte 9 no existen como tal en tu consulta, porque? porque estas haciendo un union por lo que las columnas finales de este query:

Código SQL:
Ver original
  1. SELECT DISTINCT TRIM,Corte1,UMC1,Ton1 FROM protri01 WHERE PedPipsa1 = '2070713'
  2. UNION SELECT DISTINCT  TRIM,Corte2,UMC2,Ton2 FROM protri01 WHERE PedPipsa2 ='2070713'
  3. UNION SELECT DISTINCT TRIM,Corte3,UMC3,Ton3 FROM protri01 WHERE PedPipsa3 = '2070713'
  4. UNION SELECT DISTINCT  TRIM,Corte4,UMC4,Ton4 FROM protri01 WHERE PedPipsa4 ='2070713'
  5. UNION SELECT DISTINCT TRIM,Corte5,UMC5,Ton5 FROM protri01 WHERE PedPipsa5 = '2070713'
  6. UNION SELECT DISTINCT TRIM,Corte6,UMC6,Ton6 FROM protri01 WHERE PedPipsa6 ='2070713'
  7. UNION SELECT DISTINCT TRIM,Corte7,UMC7,Ton7 FROM protri01 WHERE PedPipsa7 = '2070713'
  8. UNION SELECT DISTINCT TRIM,Corte8,UMC8,Ton8 FROM protri01 WHERE PedPipsa8 ='2070713'
  9. UNION SELECT DISTINCT TRIM,Corte9,UMC9,Ton9 FROM protri01 WHERE PedPipsa9 = '2070713'
  10. UNION SELECT DISTINCT TRIM,Corte10,UMC10,Ton10 FROM protri01 WHERE PedPipsa10 ='2070713'
  11. UNION SELECT DISTINCT TRIM,Corte11,UMC11,Ton11  FROM protri01 WHERE PedPipsa11 = '2070713'
  12. UNION SELECT DISTINCT TRIM,Corte12,UMC12,Ton12 FROM protri01 WHERE PedPipsa12 ='2070713'

son trim,corte1,umc1 y ton1 para obtener lo que necesitas tendrias uqe hacer un subquery de las 2 condiciones donde obtienes corte9 y corte 8....ahora una pregunta....porque tu tabla tiene tantos campos repetidos???(repetidos corte1,corte2 etc)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 21/10/2013, 14:46
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 17 años
Puntos: 2
Respuesta: Como sumar 2 columnas de una misma linea

Lo de las tablas repetidas nose, asi estaba ya diseñado, igual yo cuando lo vi dije que estaba muy fea esa tabla y la logica de datos, regresando al tema, Esto es lo que retorno:

Por favor nota que en el primer registro ya da 10 en Ton1, el problema es que da 10 pero porque "lo meti en duro" Es decir no evaluo si la condicion se cumpli, simplemente hagop la operacion:
Código SQL:
Ver original
  1. UNION SELECT DISTINCT TRIM,Corte8,UMC8,Ton8+Ton9 AS Ton8 FROM protri01 WHERE PedPipsa8 ='2070713'
:(
  #10 (permalink)  
Antiguo 21/10/2013, 14:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Como sumar 2 columnas de una misma linea

Código SQL:
Ver original
  1. UNION SELECT DISTINCT TRIM,Corte8,UMC8,CASE WHEN corte8=corte9 thenTon8+Ton9 ELSE ton8 AS Ton8 FROM protri01 WHERE PedPipsa8 ='2070713'
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 21/10/2013, 15:15
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 17 años
Puntos: 2
Respuesta: Como sumar 2 columnas de una misma linea

Perdona las molestia que te sigo causando :( Ahora solo me marca error en el AS

Ya mero te vas de tu chamba, no me dejes morir solo :(
  #12 (permalink)  
Antiguo 21/10/2013, 15:25
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Como sumar 2 columnas de una misma linea

Código SQL:
Ver original
  1. UNION SELECT DISTINCT TRIM,Corte8,UMC8,CASE WHEN corte8=corte9 thenTon8+Ton9 ELSE ton8 END AS Ton8 FROM protri01 WHERE PedPipsa8 ='2070713'

:)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 25/10/2013, 09:24
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 17 años
Puntos: 2
Respuesta: Como sumar 2 columnas de una misma linea

Gracias :)

Etiquetas: columnas, select, valor
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 05:56.