Ver Mensaje Individual
  #8 (permalink)  
Antiguo 12/02/2014, 15:31
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 9 meses
Puntos: 774
Respuesta: Sumar una subconsulta

si se puede, en lugar de usar una tabla temporal deberias de usar una funcion, aunque en el primer query:

Código SQL:
Ver original
  1. SELECT ((SUM(ACL.UNIDADESTOTAL) * ACL.PRECIO * ADC.TIPOCAMBIO)/(APL.IMPORTEALB * ADC.TIPOCAMBIO)) * APL.GASTOS  AS IMPORTEPESOS
  2. FROM ALBCOMPRALIN ACL
  3. LEFT JOIN ALBCOMPRACAB ACC
  4. ON ACC.NUMALBARAN = ACL.NUMALBARAN AND ACC.NUMSERIE = ACL.NUMSERIE
  5. LEFT JOIN ADSA_PEDIMENTOSLIN APL
  6. ON APL.SUALBARAN = ACC.SUALBARAN
  7. LEFT JOIN ADSA_PEDIMENTOSCAB ADC
  8. ON ADC.NUMPED = APL.NUMPED AND ADC.PREFIJOPED = APL.PREFIJOPED AND ADC.AGENTEPED = APL.AGENTEPED
  9. WHERE REFERENCIA = '724141850131' AND APL.NUMPED IS NOT NULL AND APL.NUMPED > 2014
  10. GROUP BY  
  11. APL.NUMPED, ADC.FECHAPEDIMENTO, ACL.REFERENCIA, ACL.PRECIO, ADC.TIPOCAMBIO, ADC.GASTOS, APL.SUALBARAN, ACL.UNIDADESTOTAL,
  12. APL.IMPORTEALB, APL.GASTOS

no veo donde filtras por numero de pedimento...... pero bueno seria que hicieras algo asi:

Código SQL:
Ver original
  1. CREATE FUNCTION retorna_suma (@pedimento INT)
  2. RETURNS @TABLE
  3. (
  4. suma INT
  5. )
  6. AS
  7. BEGIN
  8. INSERT INTO @TABLE
  9. SELECT SUM(IMPORTEPESOS) AS total FROM
  10. (
  11. SELECT ((SUM(ACL.UNIDADESTOTAL) * ACL.PRECIO * ADC.TIPOCAMBIO)/(APL.IMPORTEALB * ADC.TIPOCAMBIO)) * APL.GASTOS  AS IMPORTEPESOS
  12. FROM ALBCOMPRALIN ACL
  13. LEFT JOIN ALBCOMPRACAB ACC
  14. ON ACC.NUMALBARAN = ACL.NUMALBARAN AND ACC.NUMSERIE = ACL.NUMSERIE
  15. LEFT JOIN ADSA_PEDIMENTOSLIN APL
  16. ON APL.SUALBARAN = ACC.SUALBARAN
  17. LEFT JOIN ADSA_PEDIMENTOSCAB ADC
  18. ON ADC.NUMPED = APL.NUMPED AND ADC.PREFIJOPED = APL.PREFIJOPED AND ADC.AGENTEPED = APL.AGENTEPED
  19. WHERE REFERENCIA = '724141850131' AND APL.NUMPED IS NOT NULL AND APL.NUMPED > 2014 AND @parametro=@pedimento
  20. GROUP BY  
  21. APL.NUMPED, ADC.FECHAPEDIMENTO, ACL.REFERENCIA, ACL.PRECIO, ADC.TIPOCAMBIO, ADC.GASTOS, APL.SUALBARAN, ACL.UNIDADESTOTAL,
  22. APL.IMPORTEALB, APL.GASTOS
  23. ) AS t1
  24. RETURN
  25. END

y ahora usarla en el segundo query:

Código SQL:
Ver original
  1. SELECT ADC.FECHAPEDIMENTO, ADP.NUMPED, ACL.REFERENCIA, SUM(ACL.UNIDADESTOTAL) AS STOCK,
  2. ACL.PRECIO*ADC.TIPOCAMBIO AS COSTCOMPRA, ADC.TIPOCAMBIO, (ACL.PRECIO*ADC.TIPOCAMBIO)*(SUM(ACL.UNIDADESTOTAL)) AS VALORFACTURA,(SELECT * FROM retorna_suma (pedimento) ) AS sumaconsulta1
  3. FROM ALBCOMPRALIN ACL
  4. LEFT JOIN ALBCOMPRACAB ACC
  5. ON ACC.NUMALBARAN=ACL.NUMALBARAN AND ACC.NUMSERIE=ACL.NUMSERIE
  6. LEFT JOIN ADSA_PEDIMENTOSLIN ADP
  7. ON ADP.SUALBARAN=ACC.SUALBARAN
  8. LEFT JOIN ADSA_PEDIMENTOSCAB ADC
  9. ON ADC.NUMPED=ADP.NUMPED AND ADC.PREFIJOPED=ADP.PREFIJOPED AND ADC.AGENTEPED=ADP.AGENTEPED
  10. WHERE REFERENCIA = '724141850131' AND ADP.NUMPED IS NOT NULL AND ADP.NUMPED > 10000
  11. GROUP BY  
  12. ADP.NUMPED, ADC.FECHAPEDIMENTO, ACL.REFERENCIA, ACL.PRECIO, ADC.TIPOCAMBIO

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me