Ver Mensaje Individual
  #8 (permalink)  
Antiguo 23/03/2017, 08:04
Avatar de Libras
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: Optimizar query

Cita:
Iniciado por jandrogdz Ver Mensaje
Disculpa he modificado como me haz comentado pero me manda un error:


Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
Lo que pasa es que el subquery esta regresando mas de un valor, cuando haces un subquery con mas de un valor no se usa como lo estas haciendo se hace de esta manera:

Código SQL:
Ver original
  1. DECLARE @pFechaDel DATE = '2017-03-22'
  2. DECLARE @pFechaAl DATE = '2017-03-22'
  3. DECLARE @IdGuids nvarchar(MAX) =  '7078a725-ca59-4b71-bc56-21b8f456d63b'
  4.  
  5. -- Facturas...
  6. SELECT ISNULL(SUM(CH.Total),0) AS Facturas,
  7. ISNULL(COUNT(CH.Total),0) AS CountFacturas
  8.     FROM Ventas.vCalculosHeader CH  
  9.  
  10. ---aqui hay que ver con que campo podrias unir este query con el de ventas.....
  11. LEFT JOIN (SELECT isnull(SUM(P1.Monto),0) cheques, isnull(COUNT(p1.monto),0) countcheques  FROM Finanzas.PagosrecibidosCheque P1 INNER JOIN
  12. Finanzas.PagosRecibidosHeader PR ON PR.IdGuid=P1.IdGuidHeader WHERE  CONVERT(DATE, P1.Fecha , 103) BETWEEN @pFechaDel AND @pFechaAl AND  
  13. PR.IdGuidCliente IN (@IdGuids) AND IsNull(PR.PagoCancelado,0)=0) AS completa ON(completa.id=ch.id)
  14.  
  15. WHERE CH.TipoDocto ='V3' AND CONVERT(DATE, CH.Fecha , 103) BETWEEN @pFechaDel AND @pFechaAl AND Cancelada = 0
  16. AND CH.ClaveCliente IN (SELECT C.Clave FROM Clientes C WHERE C.IdGuid IN (@IdGuids))
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me