cancel
Showing results for 
Search instead for 
Did you mean: 

Running Total en Crystal Report

Former Member
0 Kudos

Hola,

Estoy creando un reporte en Crystal Report similar al que se muestra en la imagen,

El reporte debe pedir como parámetro el año y al ejecutarse debe mostrar la lista de doctores (campo de usuario en SAP B1), y una columna con las cirugías que a realizado en ese año divididas por mes.

1.- ¿Como realizo el parámetro para que lea el año?

2.- ¿Como hago la suma de las cirugías por mes?

Hasta el momento solo tengo la lista de doctores y me muestra la contabilización de cirugías pero de todo el año. Esto lo hice con un running total, pero no se donde poner la condición para que me cuente solo las de un rango de fecha, por ejemplo las cirugías que realizo en julio

Date({Command.TaxDate}) in Date 2014-01-01 ) to Date (2014-01-31)

y así sucesivamente con cada mes pero también haciendo dinámico el año que el usuario seleccione.

Tengo algo así

Alguna idea??

Saludos!

Accepted Solutions (1)

Accepted Solutions (1)

former_member413321
Contributor
0 Kudos

Hola,

      Te recomiendo lo siguiente. Si es siempre para un año en especifico.

     Modifica tu query en crystal para que ya muestre la información como la necesitas de la siguiente manera

Select DoctorNombre, Sum(case when Month(Date) = 1 then CantidadCirugia else 0 end) Enero,

                                        Sum(case when Month(Date) = 2 then CantidadCirugia else 0 end) Febrero,

        etc para los 12 meses

From TabladeCirugias

Where Year(Date) = @YearParametro

De esta forma, ya estaría filtrado y acomodado a como necesitas en tu reporte.

La instrucción Sum(Case es muy util porque sumará la cantidad de registros o montos de una consulta, pero con una condición por lo que podemos como en este caso dividir los meses en columnas aparte.

Si lo que necesitas es que haga un conteo de las filas como cantidad de cirugias debes cambiar CantidadCirugia por 1.

Espero te funcione.

Former Member
0 Kudos

Hola,

Gracias por tú respuesta, probaré la solución que me das y te cuento como me fue.

Saludos!

Answers (1)

Answers (1)

Former Member
0 Kudos

Hola,

Alejandro, he intentado adaptar tú código para lo que necesito, hasta el momento tengo esto:

SELECT T0.[U_doctor], T0.[TaxDate],

Sum(case when Month(T0.[TaxDate]) = 01 THEN 1 ELSE 0 END) Enero,

Sum(case when Month(T0.[TaxDate]) = 02 THEN 1 ELSE 0 END) Febrero,

Sum(case when Month(T0.[TaxDate]) = 08 THEN 1 ELSE 0 END) Agosto

FROM [dbo].[ODLN]  T0

inner join UFD1 T1 on T0.U_cirugia = T1.FldValue and T1.TableID = 'OINV'

inner join UFD1 T2 on T0.U_doctor = T2.FldValue and T2.TableID = 'ODLN'

WHERE Year(T0.[TaxDate]) = '2014'

GROUP BY T0.[U_doctor], T0.[TaxDate]

Pero tengo algunos detalles que no se como solucionar, como la información viene de diferentes tablas, la consulta me pide que en el Gruop by agrupe por los campos que utilizo en el Select, pero yo sólo quiero agrupar por el campo doctor, agrupando por ambos campos me resulta esto:

Para el reporte aparte de esta información necesito otros campos como:

SELECT T0.[DocNum], T0.[DocType], T0.[DocDueDate], T0.[DocDate],  T0.[TaxDate], YEAR(T0.TaxDate)as Año, T0.DocEntry,T0.NumAtCard,

T0.Comments, T0.[CardCode], T0.[CardName],T0.U_doctor, T0.U_cirugia,

T1.Descr as Cirugia, T2.Descr as Doctor

Pero si los pongo en el Selec el query me pedirá utilizarlos en el Gruop by.


Gracias por el apoyo. Saludos!

former_member413321
Contributor
0 Kudos

Hola,

     Todos los campos que utilices en el reporte debes ponerlos en el Group by,
Pero en el caso de campos como taxdate o fechas debes considerer cual es el objetivo del reporte.

Si utilizas la fecha como un campo de reporte no hay una forma de tener totales por mes porque hay 31 dias de posibilidades, Como se ve en la imagen al agregar taxdate al query ya no hay agrupamiento, porque la fecha cambia.

Cual seria la necesidad de DocDate, TaxDate, DocDueDate?

Si es ver el mes puedes cambiarlo por un Month(fecha),

La misma pregunta va para DocNum, si lo que requieres es un resumen de visitas por mes no puedes colocar el detalle, seria contradictorio.

Ahi tendrias que pensar si lo que tienes son 2 reportes, uno detallado y otro resumido.

Espero poder aclararte tus dudas.

Former Member
0 Kudos

Hola,

Quería poner los campos sólo como informativos, pero tienes razón es mejor solo dejar los campos que necesito en el reporte.

El reporte quedo listo y funciona a la perfección.

Muchas gracias por tu apoyo