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

[SOLUCIONADO] variables en subconsultas

Estas en el tema de variables en subconsultas en el foro de Bases de Datos General en Foros del Web. Cordial saludo. Estoy trabajando con Sql Server, como hago para traer los resultados de una consulta a una subconsulta para realizar comparaciones. ej: Necesito capturar ...
  #1 (permalink)  
Antiguo 04/04/2018, 08:51
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Pregunta variables en subconsultas

Cordial saludo.

Estoy trabajando con Sql Server, como hago para traer los resultados de una consulta a una subconsulta para realizar comparaciones. ej:

Necesito capturar el valor de los campos crefechgeneinte , Ti_UltCuoVen para utilizarlo en la ultima subconsulta, resalto en negrita los campos que necesito validar

Código SQL:
Ver original
  1. DECLARE @Sdt_FecPag SMALLDATETIME
  2. DECLARE @P_NumCre INT
  3. SET @Sdt_FecPag = '01/01/1900'
  4. SET @P_NumCre = 130058
  5. DECLARE @crefechgeneinte smalldatetime
  6.  
  7. SELECT
  8.     c.crenumero
  9.     , [B]c.crefechgeneinte[/B]
  10.     , isnull(pp3.Ti_UltCuoVen, 0) AS [B]Ti_UltCuoVen[/B]
  11.     , CASE isnull(pp3.Ti_UltCuoVen, 0) WHEN 0 THEN c.crefechgeneinte ELSE pp3.Sdt_FecUltCuoVen END AS Sdt_FecUltCuoVen
  12.     , dia.D_IntCorCS
  13. FROM
  14.     dbo.vistintecorr AS c  
  15.     LEFT OUTER JOIN (
  16.         SELECT
  17.             ppcuota AS Ti_UltCuoVen
  18.             , ppfecha AS Sdt_FecUltCuoVen
  19.             , crenumero
  20.             FROM
  21.                 dbo.planpago
  22.             WHERE
  23.                 ppfecha <= @Sdt_FecPag
  24.                 AND ppcuota = (
  25.                                 SELECT MAX(ppcuota) FROM planpago AS ppn
  26.                                 WHERE ppn.crenumero = dbo.planpago.crenumero
  27.                                 AND ppfecha <= @Sdt_FecPag
  28.                                 )
  29.     ) AS pp3 ON pp3.crenumero = c.crenumero
  30.     LEFT OUTER JOIN (
  31.         SELECT SUM(diavalointe - diaabonsubs) AS D_IntCorCS, crenumero
  32.         FROM dbo.diario
  33.         WHERE diaestado = 'CS'
  34.             AND diafecha < (SELECT [B]CASE isnull(Ti_UltCuoVen, 0) WHEN 0 THEN c.crefechgeneinte ELSE pp.ppfecha END AS ppfecha[/B]
  35.                             FROM planpago AS pp
  36.                             WHERE pp.crenumero=dbo.diario.crenumero AND
  37.                             pp.ppfecha <= @Sdt_FecPag
  38.                             AND pp.ppcuota = (
  39.                             SELECT MAX(pp2.ppcuota) FROM planpago AS pp2
  40.                             WHERE pp2.crenumero = dbo.diario.crenumero
  41.                             AND pp2.ppfecha <= @Sdt_FecPag
  42.                             ))
  43.         GROUP BY crenumero
  44.     ) AS dia ON dia.crenumero = c.crenumero
  45. WHERE c.crenumero = @P_NumCre
  46. ORDER BY c.crenumero

[/QUOTE]

Agradezco la ayuda y sugerencias que me puedan brindar

Última edición por gnzsoloyo; 12/04/2018 a las 05:02 Razón: Usar HIGHLIGHT por favor. Para eso están.
  #2 (permalink)  
Antiguo 04/04/2018, 09: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: variables en subconsultas

Podrias separar las subconsultas:
Código SQL:
Ver original
  1. SELECT * FROM(
  2. SELECT
  3. c.crenumero
  4. , c.crefechgeneinte
  5. , isnull(pp3.Ti_UltCuoVen, 0) AS Ti_UltCuoVen
  6. , CASE isnull(pp3.Ti_UltCuoVen, 0) WHEN 0 THEN c.crefechgeneinte ELSE pp3.Sdt_FecUltCuoVen END AS Sdt_FecUltCuoVen
  7. , dia.D_IntCorCS
  8. FROM
  9. dbo.vistintecorr AS c
  10. LEFT OUTER JOIN (
  11. SELECT
  12. ppcuota AS Ti_UltCuoVen
  13. , ppfecha AS Sdt_FecUltCuoVen
  14. , crenumero
  15. FROM
  16. dbo.planpago
  17. WHERE
  18. ppfecha <= @Sdt_FecPag
  19. AND ppcuota = (
  20. SELECT MAX(ppcuota) FROM planpago AS ppn
  21. WHERE ppn.crenumero = dbo.planpago.crenumero
  22. AND ppfecha <= @Sdt_FecPag
  23. )
  24. ) AS pp3 ON pp3.crenumero = c.crenumero
  25. ) AS completa
  26.  
  27. LEFT OUTER JOIN (
  28. SELECT SUM(diavalointe - diaabonsubs) AS D_IntCorCS, crenumero
  29. FROM dbo.diario
  30. WHERE diaestado = 'CS'
  31. AND diafecha < (SELECT CASE isnull(Ti_UltCuoVen, 0) WHEN 0 THEN completa.crefechgeneinte ELSE pp.ppfecha END AS ppfecha
  32. FROM planpago AS pp
  33. WHERE pp.crenumero=dbo.diario.crenumero AND
  34. pp.ppfecha <= @Sdt_FecPag
  35. AND pp.ppcuota = (
  36. SELECT MAX(pp2.ppcuota) FROM planpago AS pp2
  37. WHERE completa.crenumero = dbo.diario.crenumero
  38. AND completa.ppfecha <= @Sdt_FecPag
  39. ))
  40. GROUP BY crenumero
  41. ) AS dia ON dia.crenumero = completa.crenumero
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 04/04/2018, 09:51
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Respuesta: variables en subconsultas

Cordial saludo Libras

Gracias por responder rapido pero aun me sale errores:

The multi-part identifier "dia.D_IntCorCS" could not be bound. ya que esta en la subconsulta de abajo, lo quite de la consulta pero siguen saliendo los dos errores de abajo

The multi-part identifier "completa.Ti_UltCuoVen" could not be bound.

The multi-part identifier "completa.crefechgeneinte" could not be bound.

Agradezco de antemano la ayuda y sugerencias que me puedan brindar.
  #4 (permalink)  
Antiguo 04/04/2018, 11:52
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: variables en subconsultas

la consulta que te puse no va a funcionar nada mas ejecutandola, es para que te des una idea de como hacerle, revisa bien tus campos y ve cuales ya traes para que puedas usarlos
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 11/04/2018, 10:26
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Respuesta: variables en subconsultas

Cordial saludo.

Para los que les ha pasado lo mismo que a mi la solucion es utilizar outer apply que es el equivalente a left join o cross aply que es el equivalente a inner join

aqui un ejemplo para e que pueda necesitar.
Código SQL:
Ver original
  1. SELECT
  2.                 vic.crenumero
  3.                 , vic.cresaldactu
  4.                 , vic.crefechgeneinte
  5.                 , vic.modnocausacion
  6.                 , vic.dpcedula
  7.                 , vic.cretasasubs
  8.                 , vic.creporctasasubs
  9.                 , ep.epfechasite AS Sdt_UltFecPag
  10.             FROM
  11.                 vistintecorr AS vic
  12.                 OUTER apply(
  13.                     SELECT
  14.                         MAX(ep.epfechasite) AS epfechasite
  15.                         , ep.crenumero
  16.                     FROM
  17.                         encabepagos AS ep
  18.                     WHERE ep.crenumero = vic.crenumero
  19.                     GROUP BY
  20.                         ep.crenumero
  21.                 )AS ep
  22.             WHERE
  23.                 vic.crenumero = 1
  24.             ORDER BY
  25.                 vic.crenumero ASC

[/PHP]

Última edición por gnzsoloyo; 12/04/2018 a las 05:03 Razón: SQL no es PHP. Usar el HIGHLIGHT correcto por favor.

Etiquetas: campos, sql, subconsultas, variables
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 14:20.