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

Sumar valores de varias columnas en Join

Estas en el tema de Sumar valores de varias columnas en Join en el foro de SQL Server en Foros del Web. Hola, Tengo un problema con una query que anteriormente libras me estaba ayudando a resolver pero creo que plantie mal mi problema y aqui voy ...
  #1 (permalink)  
Antiguo 30/10/2013, 11:22
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Sumar valores de varias columnas en Join

Hola,
Tengo un problema con una query que anteriormente libras me estaba ayudando a resolver pero creo que plantie mal mi problema y aqui voy de nuez...
Tengo la 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 = '2073713'
  4. UNION SELECT DISTINCT TRIM,Corte2,UMC2,Ton2  FROM protri01 WHERE PedPipsa2 ='2073713'
  5. UNION SELECT DISTINCT TRIM,Corte3,UMC3,Ton3 FROM protri01 WHERE PedPipsa3 = '2073713'
  6. UNION SELECT DISTINCT TRIM,Corte4,UMC4,Ton4 FROM protri01 WHERE PedPipsa4 ='2073713'
  7. UNION SELECT DISTINCT TRIM,Corte5,UMC5,Ton5 FROM protri01 WHERE PedPipsa5 = '2073713'
  8. UNION SELECT DISTINCT TRIM,Corte6,UMC6,Ton6 FROM protri01 WHERE PedPipsa6 ='2073713'
  9. UNION SELECT DISTINCT TRIM,Corte7,UMC7,Ton7 FROM protri01 WHERE PedPipsa7 = '2073713'
  10. UNION SELECT DISTINCT TRIM,Corte8,UMC8,Ton8 FROM protri01 WHERE PedPipsa7 = '2073713'
  11. --union SELECT DISTINCT Trim,Corte8,UMC8,case when Corte8=Corte9 then Ton8+Ton9 else Ton8 end AS Ton8 FROM protri01 WHERE PedPipsa8 ='2070713'
  12. UNION SELECT DISTINCT TRIM,Corte9,UMC9,Ton9 FROM protri01 WHERE PedPipsa9 = '2073713'
  13. UNION SELECT DISTINCT TRIM,Corte10,UMC10,Ton10 FROM protri01 WHERE PedPipsa10 ='2073713'
  14. UNION SELECT DISTINCT TRIM,Corte11,UMC11,Ton11  FROM protri01 WHERE PedPipsa11 = '2073713'
  15. UNION SELECT DISTINCT TRIM,Corte12,UMC12,Ton12 FROM protri01 WHERE PedPipsa12 ='2073713' ) C
  16. INNER JOIN
  17. (SELECT DISTINCT Descripcion,Id_Contenedor,Ancho,UAncho,TRIM AS TrimCorte,SUM(Peso) Peso ,COUNT(Id_Lote) Rollos
  18. FROM    prolot01  A INNER JOIN  catpap01 B ON B.Id_Papel = A.Id_Papel
  19. WHERE   PedidoPIPSA= '2073713'AND Peso > 0 AND DevProd = 0 AND Jagenberg = 0 AND Detenido = 0 AND Rechazado = 0
  20. GROUP BY Id_Contenedor,Ancho,UAncho,A.TRIM,B.Descripcion)D
  21. ON  C.TRIM = D.TrimCorte AND Corte1 = Ancho AND UMC1 = UAncho  GROUP BY TRIM,Corte1,UMC1,Descripcion,Id_Contenedor,Ancho,UAncho,TrimCorte,Peso,Rollos
[IMG]imgeek.net/imagepost/Myqr1.PNG[/IMG]

En la imagen se ve en la primera fila:
que tengo: Corte1 71 CM de 11 Toneladas.
Pero si ejecuto lo siguiente:

Se ve que para corte 1 2 y 3 tengo lo mismo, es decir tengo 3 cortes de 71 con 11 toneladas cada uno lo cual da una suma de 33 toneladas. Estamos?

Entonces intentando resolver esto, modifique la query asi:

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

Con esto ya me muestra la sumatoria:

El problema es que ya no me muestra las demas columnas que me mostraba que estan despues del Join:
Código SQL:
Ver original
  1. INNER JOIN
  2. (SELECT DISTINCT Descripcion,Id_Contenedor,Ancho,UAncho,TRIM AS TrimCorte,SUM(Peso) Peso ,COUNT(Id_Lote) Rollos

Alguien que me pueda ayudar? :(
De antemano muchas gracias :)
  #2 (permalink)  
Antiguo 30/10/2013, 11:28
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sumar valores de varias columnas en Join

y si pones en tu select principal todas las columnas que necesitas que pasa????
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 30/10/2013, 12:23
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Sumar valores de varias columnas en Join

Hola,
Pues intente hacer esto:
Código SQL:
Ver original
  1. SELECT MAX(RowN),TRIM,Corte1,UMC1,SUM(Ton1)Ton1 FROM(
  2. SELECT  DISTINCT 1 RowN, TRIM,Corte1,UMC1,Ton1 FROM protri01 WHERE PedPipsa1 = '2073713'
  3. UNION SELECT DISTINCT 2 RowN,TRIM,Corte2,UMC2,Ton2 FROM protri01 WHERE PedPipsa2 ='2073713'
  4. UNION SELECT DISTINCT 3 RowN,TRIM,Corte3,UMC3,Ton3 FROM protri01 WHERE PedPipsa3 = '2073713'
  5. UNION SELECT DISTINCT 4 RowN,TRIM,Corte4,UMC4,Ton4 FROM protri01 WHERE PedPipsa4 ='2073713'
  6. UNION SELECT DISTINCT 5 RowN,TRIM,Corte5,UMC5,Ton5 FROM protri01 WHERE PedPipsa5 = '2073713'
  7. UNION SELECT DISTINCT 6 RowN,TRIM,Corte6,UMC6,Ton6 FROM protri01 WHERE PedPipsa6 ='2073713'
  8. UNION SELECT DISTINCT 7 RowN,TRIM,Corte7,UMC7,Ton7 FROM protri01 WHERE PedPipsa7 = '2073713'
  9. UNION SELECT DISTINCT 8 RowN,TRIM,Corte8,UMC8,Ton8 FROM protri01 WHERE PedPipsa8 ='2073713'
  10. UNION SELECT DISTINCT 9 RowN,TRIM,Corte9,UMC9,Ton9 FROM protri01 WHERE PedPipsa9 = '2073713'
  11. UNION SELECT DISTINCT 10 RowN,TRIM,Corte10,UMC10,Ton10 FROM protri01 WHERE PedPipsa10 ='2073713'
  12. UNION SELECT DISTINCT 11 RowN,TRIM,Corte11,UMC11,Ton11  FROM protri01 WHERE PedPipsa11 = '2073713'
  13. UNION SELECT DISTINCT 12 RowN,TRIM,Corte12,UMC12,Ton12 FROM protri01 WHERE PedPipsa12 ='2073713' ) C
  14. UNION SELECT DISTINCT Descripcion,Id_Contenedor,Ancho,UAncho,TRIM AS TrimCorte,SUM(Peso) Peso ,COUNT(Id_Lote) Rollos
  15. FROM    prolot01  A INNER JOIN  catpap01 B ON B.Id_Papel = A.Id_Papel
  16. WHERE   PedidoPIPSA= '2073713'AND Peso > 0 AND DevProd = 0 AND Jagenberg = 0 AND Detenido = 0 AND Rechazado = 0
  17. GROUP BY Id_Contenedor,Ancho,UAncho,A.TRIM,B.Descripcion
Pero me dijo:
Msg 8120, Level 16, State 1, Line 1
Column 'C.Trim' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
:( Tienes alguna forma en la que pueda unir mi consulta para q salga todo? :(

EDITO:
Mi consulta que si me muestra todos mis campos esta asi:
Código SQL:
Ver original
  1. SELECT TRIM,Corte1,UMC1,SUM(Ton1)Ton1,Descripcion,Id_Contenedor,Ancho,UAncho,TrimCorte,Peso,Rollos FROM(
  2. SELECT DISTINCT TRIM,Corte1,UMC1,Ton1  FROM protri01 WHERE PedPipsa1 = '2073713'
  3. UNION SELECT DISTINCT TRIM,Corte2,UMC2,Ton2  FROM protri01 WHERE PedPipsa2 ='2073713'
  4. UNION SELECT DISTINCT TRIM,Corte3,UMC3,Ton3 FROM protri01 WHERE PedPipsa3 = '2073713'
  5. UNION SELECT DISTINCT TRIM,Corte4,UMC4,Ton4 FROM protri01 WHERE PedPipsa4 ='2073713'
  6. UNION SELECT DISTINCT TRIM,Corte5,UMC5,Ton5 FROM protri01 WHERE PedPipsa5 = '2073713'
  7. UNION SELECT DISTINCT TRIM,Corte6,UMC6,Ton6 FROM protri01 WHERE PedPipsa6 ='2073713'
  8. UNION SELECT DISTINCT TRIM,Corte7,UMC7,Ton7 FROM protri01 WHERE PedPipsa7 = '2073713'
  9. UNION SELECT DISTINCT TRIM,Corte8,UMC8,Ton8 FROM protri01 WHERE PedPipsa7 = '2073713'
  10. --union SELECT DISTINCT Trim,Corte8,UMC8,case when Corte8=Corte9 then Ton8+Ton9 else Ton8 end AS Ton8 FROM protri01 WHERE PedPipsa8 ='2070713'
  11. UNION SELECT DISTINCT TRIM,Corte9,UMC9,Ton9 FROM protri01 WHERE PedPipsa9 = '2073713'
  12. UNION SELECT DISTINCT TRIM,Corte10,UMC10,Ton10 FROM protri01 WHERE PedPipsa10 ='2073713'
  13. UNION SELECT DISTINCT TRIM,Corte11,UMC11,Ton11  FROM protri01 WHERE PedPipsa11 = '2073713'
  14. UNION SELECT DISTINCT TRIM,Corte12,UMC12,Ton12 FROM protri01 WHERE PedPipsa12 ='2073713' ) 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= '2073713'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
No logro comprender porque despues del cambio que hice ya no me muestra las demas columnas :(

Última edición por th3r0rn; 30/10/2013 a las 12:28
  #4 (permalink)  
Antiguo 30/10/2013, 12:34
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sumar valores de varias columnas en Join

porque no estas agrupando todas tus columnas por eso....el erro que te aparece es que estas usando funciones de agregacion y cuando haces esto tienes que poner esas columnas en un group by, si te dice que te falta C.Trim ponla en tu group by del final y listo :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 30/10/2013, 13:02
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Sumar valores de varias columnas en Join

Cita:
Iniciado por Libras Ver Mensaje
porque no estas agrupando todas tus columnas por eso....el erro que te aparece es que estas usando funciones de agregacion y cuando haces esto tienes que poner esas columnas en un group by, si te dice que te falta C.Trim ponla en tu group by del final y listo :)
Eso lo intente antes, pero me dio el siguiente error:
Código:
Msg 8120, Level 16, State 1, Line 1
Column 'C.Trim' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Msg 4104, Level 16, State 1, Line 17
The multi-part identifier "C.Trim" could not be bound.
Esto cuando al final le agrego:
Código SQL:
Ver original
  1. GROUP BY Id_Contenedor,Ancho,UAncho,A.TRIM,B.Descripcion,C.TRIM
Notese el C.Trim a lo ultimo...
Alguna sugerencia ? :(
  #6 (permalink)  
Antiguo 30/10/2013, 13:09
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sumar valores de varias columnas en Join

puedes poner todo el codigo que te da ese error?? no tienes skype??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 30/10/2013, 14:09
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Sumar valores de varias columnas en Join

Cita:
Iniciado por Libras Ver Mensaje
puedes poner todo el codigo que te da ese error?? no tienes skype??
Hola,
Código SQL:
Ver original
  1. SELECT MAX(RowN),TRIM,Corte1,UMC1,SUM(Ton1)Ton1 FROM(
  2. SELECT  DISTINCT 1 RowN, TRIM,Corte1,UMC1,Ton1 FROM protri01 WHERE PedPipsa1 = '2073713'
  3. UNION SELECT DISTINCT 2 RowN,TRIM,Corte2,UMC2,Ton2 FROM protri01 WHERE PedPipsa2 ='2073713'
  4. UNION SELECT DISTINCT 3 RowN,TRIM,Corte3,UMC3,Ton3 FROM protri01 WHERE PedPipsa3 = '2073713'
  5. UNION SELECT DISTINCT 4 RowN,TRIM,Corte4,UMC4,Ton4 FROM protri01 WHERE PedPipsa4 ='2073713'
  6. UNION SELECT DISTINCT 5 RowN,TRIM,Corte5,UMC5,Ton5 FROM protri01 WHERE PedPipsa5 = '2073713'
  7. UNION SELECT DISTINCT 6 RowN,TRIM,Corte6,UMC6,Ton6 FROM protri01 WHERE PedPipsa6 ='2073713'
  8. UNION SELECT DISTINCT 7 RowN,TRIM,Corte7,UMC7,Ton7 FROM protri01 WHERE PedPipsa7 = '2073713'
  9. UNION SELECT DISTINCT 8 RowN,TRIM,Corte8,UMC8,Ton8 FROM protri01 WHERE PedPipsa8 ='2073713'
  10. UNION SELECT DISTINCT 9 RowN,TRIM,Corte9,UMC9,Ton9 FROM protri01 WHERE PedPipsa9 = '2073713'
  11. UNION SELECT DISTINCT 10 RowN,TRIM,Corte10,UMC10,Ton10 FROM protri01 WHERE PedPipsa10 ='2073713'
  12. UNION SELECT DISTINCT 11 RowN,TRIM,Corte11,UMC11,Ton11  FROM protri01 WHERE PedPipsa11 = '2073713'
  13. UNION SELECT DISTINCT 12 RowN,TRIM,Corte12,UMC12,Ton12 FROM protri01 WHERE PedPipsa12 ='2073713' ) C
  14. UNION SELECT DISTINCT Descripcion,Id_Contenedor,Ancho,UAncho,TRIM AS TrimCorte,SUM(Peso) Peso ,COUNT(Id_Lote) Rollos
  15. FROM    prolot01  A INNER JOIN  catpap01 B ON B.Id_Papel = A.Id_Papel
  16. WHERE   PedidoPIPSA= '2073713'AND Peso > 0 AND DevProd = 0 AND Jagenberg = 0 AND Detenido = 0 AND Rechazado = 0
  17. GROUP BY Id_Contenedor,Ancho,UAncho,A.TRIM,B.Descripcion,C.TRIM


Si tengo Skype pero no da salida mi red de la oficina porque me lo bloquea, lo que tengo es Gtalk o Hangouts (Que es lo mismo xD) ahorita estoy conectado con el nottrustx arroba gmail punto com :)
  #8 (permalink)  
Antiguo 30/10/2013, 15:08
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sumar valores de varias columnas en Join

Prueba con esto

Código SQL:
Ver original
  1. SELECT MAX(RowN),C.TRIM,Corte1,UMC1,SUM(Ton1)Ton1 FROM(
  2. SELECT  DISTINCT 1 RowN, TRIM,Corte1,UMC1,Ton1 FROM protri01 WHERE PedPipsa1 = '2073713'
  3. UNION SELECT DISTINCT 2 RowN,TRIM,Corte2,UMC2,Ton2 FROM protri01 WHERE PedPipsa2 ='2073713'
  4. UNION SELECT DISTINCT 3 RowN,TRIM,Corte3,UMC3,Ton3 FROM protri01 WHERE PedPipsa3 = '2073713'
  5. UNION SELECT DISTINCT 4 RowN,TRIM,Corte4,UMC4,Ton4 FROM protri01 WHERE PedPipsa4 ='2073713'
  6. UNION SELECT DISTINCT 5 RowN,TRIM,Corte5,UMC5,Ton5 FROM protri01 WHERE PedPipsa5 = '2073713'
  7. UNION SELECT DISTINCT 6 RowN,TRIM,Corte6,UMC6,Ton6 FROM protri01 WHERE PedPipsa6 ='2073713'
  8. UNION SELECT DISTINCT 7 RowN,TRIM,Corte7,UMC7,Ton7 FROM protri01 WHERE PedPipsa7 = '2073713'
  9. UNION SELECT DISTINCT 8 RowN,TRIM,Corte8,UMC8,Ton8 FROM protri01 WHERE PedPipsa8 ='2073713'
  10. UNION SELECT DISTINCT 9 RowN,TRIM,Corte9,UMC9,Ton9 FROM protri01 WHERE PedPipsa9 = '2073713'
  11. UNION SELECT DISTINCT 10 RowN,TRIM,Corte10,UMC10,Ton10 FROM protri01 WHERE PedPipsa10 ='2073713'
  12. UNION SELECT DISTINCT 11 RowN,TRIM,Corte11,UMC11,Ton11  FROM protri01 WHERE PedPipsa11 = '2073713'
  13. UNION SELECT DISTINCT 12 RowN,TRIM,Corte12,UMC12,Ton12 FROM protri01 WHERE PedPipsa12 ='2073713' ) C
  14. UNION SELECT DISTINCT Descripcion,Id_Contenedor,Ancho,UAncho,TRIM AS TrimCorte,SUM(Peso) Peso ,COUNT(Id_Lote) Rollos
  15. FROM    prolot01  A INNER JOIN  catpap01 B ON B.Id_Papel = A.Id_Papel
  16. WHERE   PedidoPIPSA= '2073713'AND Peso > 0 AND DevProd = 0 AND Jagenberg = 0 AND Detenido = 0 AND Rechazado = 0
  17. GROUP BY Id_Contenedor,Ancho,UAncho,A.TRIM,B.Descripcion,C.TRIM


Cita:
Iniciado por th3r0rn Ver Mensaje
Si tengo Skype pero no da salida mi red de la oficina porque me lo bloquea, lo que tengo es Gtalk o Hangouts (Que es lo mismo xD) ahorita estoy conectado con el nottrustx arroba gmail punto com :)
No tengo gtalk asi que seguiremos por el foro :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 30/10/2013, 15:11
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Sumar valores de varias columnas en Join

Cita:
Iniciado por Libras Ver Mensaje
Prueba con esto

Código SQL:
Ver original
  1. SELECT MAX(RowN),C.TRIM,Corte1,UMC1,SUM(Ton1)Ton1 FROM(
  2. SELECT  DISTINCT 1 RowN, TRIM,Corte1,UMC1,Ton1 FROM protri01 WHERE PedPipsa1 = '2073713'
  3. UNION SELECT DISTINCT 2 RowN,TRIM,Corte2,UMC2,Ton2 FROM protri01 WHERE PedPipsa2 ='2073713'
  4. UNION SELECT DISTINCT 3 RowN,TRIM,Corte3,UMC3,Ton3 FROM protri01 WHERE PedPipsa3 = '2073713'
  5. UNION SELECT DISTINCT 4 RowN,TRIM,Corte4,UMC4,Ton4 FROM protri01 WHERE PedPipsa4 ='2073713'
  6. UNION SELECT DISTINCT 5 RowN,TRIM,Corte5,UMC5,Ton5 FROM protri01 WHERE PedPipsa5 = '2073713'
  7. UNION SELECT DISTINCT 6 RowN,TRIM,Corte6,UMC6,Ton6 FROM protri01 WHERE PedPipsa6 ='2073713'
  8. UNION SELECT DISTINCT 7 RowN,TRIM,Corte7,UMC7,Ton7 FROM protri01 WHERE PedPipsa7 = '2073713'
  9. UNION SELECT DISTINCT 8 RowN,TRIM,Corte8,UMC8,Ton8 FROM protri01 WHERE PedPipsa8 ='2073713'
  10. UNION SELECT DISTINCT 9 RowN,TRIM,Corte9,UMC9,Ton9 FROM protri01 WHERE PedPipsa9 = '2073713'
  11. UNION SELECT DISTINCT 10 RowN,TRIM,Corte10,UMC10,Ton10 FROM protri01 WHERE PedPipsa10 ='2073713'
  12. UNION SELECT DISTINCT 11 RowN,TRIM,Corte11,UMC11,Ton11  FROM protri01 WHERE PedPipsa11 = '2073713'
  13. UNION SELECT DISTINCT 12 RowN,TRIM,Corte12,UMC12,Ton12 FROM protri01 WHERE PedPipsa12 ='2073713' ) C
  14. UNION SELECT DISTINCT Descripcion,Id_Contenedor,Ancho,UAncho,TRIM AS TrimCorte,SUM(Peso) Peso ,COUNT(Id_Lote) Rollos
  15. FROM    prolot01  A INNER JOIN  catpap01 B ON B.Id_Papel = A.Id_Papel
  16. WHERE   PedidoPIPSA= '2073713'AND Peso > 0 AND DevProd = 0 AND Jagenberg = 0 AND Detenido = 0 AND Rechazado = 0
  17. GROUP BY Id_Contenedor,Ancho,UAncho,A.TRIM,B.Descripcion,C.TRIM




No tengo gtalk asi que seguiremos por el foro :)

Msg 8120, Level 16, State 1, Line 1
Column 'C.Trim' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Msg 4104, Level 16, State 1, Line 17
The multi-part identifier "C.Trim" could not be bound.
edito:
O sera mejor usar algo asi;
Código SQL:
Ver original
  1. UNION SELECT DISTINCT TRIM,Corte1,UMC1,CASE WHEN Corte1=Corte2 AND Corte3=Corte1 THEN Ton1+Ton2+Ton3 ELSE Ton2 END AS Ton2 FROM protri01 WHERE PedPipsa8 ='2070713'
El pex es que como validaria para todos los casos? :(
  #10 (permalink)  
Antiguo 30/10/2013, 15:22
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sumar valores de varias columnas en Join

A ver hasta aqui esta bien tu codigo:

Código SQL:
Ver original
  1. SELECT MAX(RowN),TRIM,Corte1,UMC1,SUM(Ton1)Ton1 FROM(
  2. SELECT  DISTINCT 1 RowN, TRIM,Corte1,UMC1,Ton1 FROM protri01 WHERE PedPipsa1 = '2073713'
  3. UNION SELECT DISTINCT 2 RowN,TRIM,Corte2,UMC2,Ton2 FROM protri01 WHERE PedPipsa2 ='2073713'
  4. UNION SELECT DISTINCT 3 RowN,TRIM,Corte3,UMC3,Ton3 FROM protri01 WHERE PedPipsa3 = '2073713'
  5. UNION SELECT DISTINCT 4 RowN,TRIM,Corte4,UMC4,Ton4 FROM protri01 WHERE PedPipsa4 ='2073713'
  6. UNION SELECT DISTINCT 5 RowN,TRIM,Corte5,UMC5,Ton5 FROM protri01 WHERE PedPipsa5 = '2073713'
  7. UNION SELECT DISTINCT 6 RowN,TRIM,Corte6,UMC6,Ton6 FROM protri01 WHERE PedPipsa6 ='2073713'
  8. UNION SELECT DISTINCT 7 RowN,TRIM,Corte7,UMC7,Ton7 FROM protri01 WHERE PedPipsa7 = '2073713'
  9. UNION SELECT DISTINCT 8 RowN,TRIM,Corte8,UMC8,Ton8 FROM protri01 WHERE PedPipsa8 ='2073713'
  10. UNION SELECT DISTINCT 9 RowN,TRIM,Corte9,UMC9,Ton9 FROM protri01 WHERE PedPipsa9 = '2073713'
  11. UNION SELECT DISTINCT 10 RowN,TRIM,Corte10,UMC10,Ton10 FROM protri01 WHERE PedPipsa10 ='2073713'
  12. UNION SELECT DISTINCT 11 RowN,TRIM,Corte11,UMC11,Ton11  FROM protri01 WHERE PedPipsa11 = '2073713'
  13. UNION SELECT DISTINCT 12 RowN,TRIM,Corte12,UMC12,Ton12 FROM protri01 WHERE PedPipsa12 ='2073713' ) C
  14.  
  15. UNION (SELECT DISTINCT Descripcion,Id_Contenedor,Ancho,UAncho,TRIM AS TrimCorte,SUM(Peso) Peso ,COUNT(Id_Lote) Rollos
  16. FROM    prolot01  A INNER JOIN  catpap01 B ON B.Id_Papel = A.Id_Papel
  17. WHERE   PedidoPIPSA= '2073713'AND Peso > 0 AND DevProd = 0 AND Jagenberg = 0 AND Detenido = 0 AND Rechazado = 0
  18. GROUP BY Id_Contenedor,Ancho,UAncho,A.TRIM,B.Descripcion
  19. )

si te fijas separe tu codigo en 2 secciones, ahora aqui hay un error muy grande estas haciendo un UNION y en un union las columnas deben de ser las mismas ahora si tu necesitas mas columnas deberias de hacer un JOIN con la segunda consulta, ahora voy a lo que te dije en la pregunta anterior, la estructura de tus tablas esta mal, por eso no puedes obtener la informacion de manera correcta y facil.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 30/10/2013, 15:34
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Sumar valores de varias columnas en Join

Entonces de plano no se puede hacer lo que quiero? no me digas eso por favor
  #12 (permalink)  
Antiguo 30/10/2013, 15:36
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sumar valores de varias columnas en Join

si se puede pero no con un union, tendrias que hacer un left join y analizar los datos que quieres acomodar :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 30/10/2013, 15:51
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Sumar valores de varias columnas en Join

Tal vez esta sea una forma muy estupida de hacerlo, pero es lo mas rapido que se me ocurre. Es hacerlo validando cuando las medidas sean iguales tal y como me ayudaste la otra vez. Puedes decirme si esta mal?
Código SQL:
Ver original
  1. SELECT TRIM,Corte1,UMC1,SUM(Ton1)Ton1,Descripcion,Id_Contenedor,Ancho,UAncho,TrimCorte,Peso,Rollos FROM(
  2. SELECT DISTINCT TRIM,Corte1,UMC1,Ton1  FROM protri01 WHERE PedPipsa1 = '2073713'
  3. UNION SELECT DISTINCT TRIM,Corte2,UMC2,CASE WHEN Corte2=Corte3 THEN Ton2+Ton3 ELSE Ton2 END AS Ton2 FROM protri01 WHERE PedPipsa2 ='2073713'
  4. --union select distinct Trim,Corte2,UMC2,Ton2  from protri01 where PedPipsa2 ='2073713'
  5. UNION SELECT DISTINCT TRIM,Corte3,UMC3,Ton3 FROM protri01 WHERE PedPipsa3 = '2073713'
  6. UNION SELECT DISTINCT TRIM,Corte4,UMC4,Ton4 FROM protri01 WHERE PedPipsa4 ='2073713'
  7. UNION SELECT DISTINCT TRIM,Corte5,UMC5,Ton5 FROM protri01 WHERE PedPipsa5 = '2073713'
  8. UNION SELECT DISTINCT TRIM,Corte6,UMC6,Ton6 FROM protri01 WHERE PedPipsa6 ='2073713'
  9. UNION SELECT DISTINCT TRIM,Corte7,UMC7,Ton7 FROM protri01 WHERE PedPipsa7 = '2073713'
  10. UNION SELECT DISTINCT TRIM,Corte8,UMC8,Ton8 FROM protri01 WHERE PedPipsa7 = '2073713'
  11. UNION SELECT DISTINCT TRIM,Corte9,UMC9,Ton9 FROM protri01 WHERE PedPipsa9 = '2073713'
  12. UNION SELECT DISTINCT TRIM,Corte10,UMC10,Ton10 FROM protri01 WHERE PedPipsa10 ='2073713'
  13. UNION SELECT DISTINCT TRIM,Corte11,UMC11,Ton11  FROM protri01 WHERE PedPipsa11 = '2073713'
  14. UNION SELECT DISTINCT TRIM,Corte12,UMC12,Ton12 FROM protri01 WHERE PedPipsa12 ='2073713' ) 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= '2073713'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
Lo que no me cuadra, es quie estoy solo sumando el Ton2+Ton3, cuando ambos valen 11, y me imprime un total de 33, dicha valor es el que requiero, ya que la verdad si deberia de dar 33 por q Ton1 tambien vale 11, pero nose si ahi este sumandose ya en automatico. Podrias orientarme si esto ya se esta sumando? (:
  #14 (permalink)  
Antiguo 30/10/2013, 15:56
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sumar valores de varias columnas en Join

Cita:
Iniciado por th3r0rn Ver Mensaje
Lo que no me cuadra, es quie estoy solo sumando el Ton2+Ton3, cuando ambos valen 11, y me imprime un total de 33, dicha valor es el que requiero, ya que la verdad si deberia de dar 33 por q Ton1 tambien vale 11, pero nose si ahi este sumandose ya en automatico. Podrias orientarme si esto ya se esta sumando? (:
Si te funciona adelante, y como me preguntas si se esta haciendo bien, el que tiene los datos y ve el resultado eres tu no yo :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #15 (permalink)  
Antiguo 30/10/2013, 16:05
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Sumar valores de varias columnas en Join

No seas asi :( A lo que me refiero es porque la suma de 11 + 11 me da 33 :/
Y otra cosa, queria preguntarte, estoy haciendolo:
Código SQL:
Ver original
  1. UNION SELECT DISTINCT TRIM,Corte2,UMC2,CASE WHEN Corte2=Corte3 AND Ton2=Ton3 THEN Ton2+Ton3 ELSE Ton2 END AS Ton2 FROM protri01 WHERE PedPipsa2 ='2073713'

si te fijas, hay un case que valida que cuando Corte2 sea = a corte3 y ton2 sea igual a ton3
entonces sumar y mostrar, de lo contrario dejar Ton2 normal.
Lo que quiero hacer, es exactamente lo mismo, pero realizar una especie de else if (de lo contrario si...)
Para validar que si nada de eso se cumple hacer esto, si esto otro no se cumple haz esto otro y si ya de plano no, pues entonces deja el ton2 tal cual.
Si me explico? :(
  #16 (permalink)  
Antiguo 30/10/2013, 16:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sumar valores de varias columnas en Join

si ejecutas esto que te regresa?

SELECT DISTINCT Trim,Corte2,UMC2,case when Corte2=Corte3 then Ton2+Ton3 else Ton2 end AS Ton2 FROM protri01 WHERE PedPipsa2 ='2073713'

te regresa los 22 que necesitas? estas haciendo un sum global puede ser que en algun union se te agregue un valor verifica corriendo tu query union por union y ve donde es donde trae un valor de mas :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #17 (permalink)  
Antiguo 30/10/2013, 16:17
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Sumar valores de varias columnas en Join

Me da 22 tal cual se muestra en la pantalla:
  #18 (permalink)  
Antiguo 30/10/2013, 16:21
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sumar valores de varias columnas en Join

entonces a verificar en que parte trae el 1 de mas :) prueba con esto:

Código SQL:
Ver original
  1. SELECT TRIM,Corte1,UMC1,SUM(Ton1)Ton1,Descripcion,Id_Contenedor,Ancho,UAncho,TrimCorte,Peso,Rollos FROM(
  2. SELECT DISTINCT TRIM,Corte1,UMC1,Ton1  FROM protri01 WHERE PedPipsa1 = '2073713'
  3. UNION SELECT DISTINCT TRIM,Corte2,UMC2,CASE WHEN Corte2=Corte3 THEN Ton2+Ton3 ELSE Ton2 END AS Ton2 FROM protri01 WHERE PedPipsa2 ='2073713'
  4.  ) C
  5. INNER JOIN
  6. (SELECT DISTINCT Descripcion,Id_Contenedor,Ancho,UAncho,TRIM AS TrimCorte,SUM(Peso) Peso ,COUNT(Id_Lote) Rollos
  7. FROM    prolot01  A INNER JOIN  catpap01 B ON B.Id_Papel = A.Id_Papel
  8. WHERE   PedidoPIPSA= '2073713'AND Peso > 0 AND DevProd = 0 AND Jagenberg = 0 AND Detenido = 0 AND Rechazado = 0
  9. GROUP BY Id_Contenedor,Ancho,UAncho,A.TRIM,B.Descripcion)D
  10. ON  C.TRIM = D.TrimCorte AND Corte1 = Ancho AND UMC1 = UAncho  GROUP BY TRIM,Corte1,UMC1,Descripcion,Id_Contenedor,Ancho,UAncho,TrimCorte,Peso,Rollos

y ve que regresa, y vas agrengando tus union hasta que veas en donde esta el problema :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #19 (permalink)  
Antiguo 30/10/2013, 17:15
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Sumar valores de varias columnas en Join

Hola gracias,
No respondiste mi pregunta en como puedo hacer una condicion multiple :(
o simplemente agrego otro case when despues del end?
  #20 (permalink)  
Antiguo 30/10/2013, 17:37
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sumar valores de varias columnas en Join

puedes encadenar varios cases en uno solo

select case when 1=1 then else yo
when 2=2 then tu
when 3=3 then el else otro end


Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. dato VARCHAR(20)
  4. )
  5.  
  6. INSERT INTO #temp VALUES ('yo')
  7. INSERT INTO #temp VALUES ('tu')
  8. INSERT INTO #temp VALUES ('el')
  9. INSERT INTO #temp VALUES ('nos')
  10. INSERT INTO #temp VALUES ('yo')
  11.  
  12. SELECT CASE WHEN dato='yo' THEN 1
  13. WHEN dato='tu' THEN 2
  14. WHEN dato='el' THEN 3 ELSE 4 END AS columna,dato
  15. FROM #temp
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #21 (permalink)  
Antiguo 31/10/2013, 09:15
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Sumar valores de varias columnas en Join

Hola,
Finalmente funciono, quedo asi:
Código SQL:
Ver original
  1. SELECT MAX(RowN), TRIM,Corte1,UMC1,SUM(Ton1)Ton1,Descripcion,Id_Contenedor,Ancho,UAncho,TrimCorte,Peso,Rollos FROM(
  2. SELECT DISTINCT 1 RowN,TRIM,Corte1,UMC1,Ton1 FROM protri01 WHERE PedPipsa1 = '2073713'
  3. UNION SELECT DISTINCT 2 RowN,TRIM,Corte2,UMC2,Ton2 FROM protri01 WHERE PedPipsa2 ='2073713'
  4. UNION SELECT DISTINCT 3 RowN,TRIM,Corte3,UMC3,Ton3 FROM protri01 WHERE PedPipsa3 = '2073713'
  5. UNION SELECT DISTINCT 4 RowN,TRIM,Corte4,UMC4,Ton4 FROM protri01 WHERE PedPipsa4 ='2073713'
  6. UNION SELECT DISTINCT 5 RowN,TRIM,Corte5,UMC5,Ton5 FROM protri01 WHERE PedPipsa5 = '2073713'
  7. UNION SELECT DISTINCT 6 RowN,TRIM,Corte6,UMC6,Ton6 FROM protri01 WHERE PedPipsa6 ='2073713'
  8. UNION SELECT DISTINCT 7 RowN,TRIM,Corte7,UMC7,Ton7 FROM protri01 WHERE PedPipsa7 = '2073713'
  9. UNION SELECT DISTINCT 8 RowN,TRIM,Corte8,UMC8,Ton8 FROM protri01 WHERE PedPipsa8 ='2073713'
  10. UNION SELECT DISTINCT 9 RowN,TRIM,Corte9,UMC9,Ton9 FROM protri01 WHERE PedPipsa9 = '2073713'
  11. UNION SELECT DISTINCT 10 RowN,TRIM,Corte10,UMC10,Ton10 FROM protri01 WHERE PedPipsa10 ='2073713'
  12. UNION SELECT DISTINCT 11 RowN,TRIM,Corte11,UMC11,Ton11  FROM protri01 WHERE PedPipsa11 = '2073713'
  13. UNION SELECT DISTINCT 12 RowN,TRIM,Corte12,UMC12,Ton12 FROM protri01 WHERE PedPipsa12 ='2073713' ) C
  14. INNER JOIN
  15. (SELECT DISTINCT Descripcion,Id_Contenedor,Ancho,UAncho,TRIM AS TrimCorte,SUM(Peso) Peso ,COUNT(Id_Lote) Rollos
  16. FROM    prolot01  A INNER JOIN  catpap01 B ON B.Id_Papel = A.Id_Papel
  17. WHERE   PedidoPIPSA= '2073713'AND Peso > 0 AND DevProd = 0 AND Jagenberg = 0 AND Detenido = 0 AND Rechazado = 0
  18. GROUP BY Id_Contenedor,Ancho,UAncho,A.TRIM,B.Descripcion)D
  19. ON  C.TRIM = D.TrimCorte AND Corte1 = Ancho AND UMC1 = UAncho  GROUP BY TRIM,Corte1,UMC1,Descripcion,Id_Contenedor,Ancho,UAncho,TrimCorte,Peso,Rollos

Como siempre tu muy amable gracias :)

Última edición por th3r0rn; 31/10/2013 a las 10:37
  #22 (permalink)  
Antiguo 31/10/2013, 19:20
Avatar de leodp77  
Fecha de Ingreso: marzo-2013
Mensajes: 39
Antigüedad: 11 años, 1 mes
Puntos: 2
Respuesta: Sumar valores de varias columnas en Join

Qué era al final?
__________________
"La mejor forma de obtener información correcta de los foros de internet es enviar algo incorrecto y esperar las correcciones"
-- Matthew Austern

Etiquetas: columnas, join, select
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 23:50.