Sip te podria orientar, para empezar eso que estas haciendo esta muy mal, no tienes porque hacer 2 queries para sacar un sum y un count, y mucho menos poner un subquery en cada columna
por ejemplo:
Esto:
Código SQL:
Ver original(SELECT isnull(SUM(P1.Monto),0) FROM Finanzas.PagosrecibidosCheque P1 INNER JOIN
Finanzas.PagosRecibidosHeader PR ON PR.IdGuid=P1.IdGuidHeader WHERE CONVERT(DATE, P1.Fecha , 103) BETWEEN @pFechaDel AND @pFechaAl AND
PR.IdGuidCliente IN (@IdGuids) AND IsNull(PR.PagoCancelado,0)=0)AS Cheques,
(SELECT isnull(COUNT(P1.Monto),0) FROM Finanzas.PagosrecibidosCheque P1 INNER JOIN
Finanzas.PagosRecibidosHeader PR ON PR.IdGuid=P1.IdGuidHeader WHERE CONVERT(DATE, P1.Fecha , 103) BETWEEN @pFechaDel AND @pFechaAl AND
PR.IdGuidCliente IN (@IdGuids) AND IsNull(PR.PagoCancelado,0)=0)AS CountCheques,
Puede quedar en esto:
Código SQL:
Ver originalSELECT isnull(SUM(P1.Monto),0) cheques, isnull(COUNT(p1.monto),0) countcheques FROM Finanzas.PagosrecibidosCheque P1 INNER JOIN
Finanzas.PagosRecibidosHeader PR ON PR.IdGuid=P1.IdGuidHeader WHERE CONVERT(DATE, P1.Fecha , 103) BETWEEN @pFechaDel AND @pFechaAl AND
PR.IdGuidCliente IN (@IdGuids) AND IsNull(PR.PagoCancelado,0)=0
Y asi susecivamente para los demas queries :)
Ahora @idguids, va a recibir mas de un valor? porque estas usando el IN?