on 07-31-2014 7:59 AM
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!
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
User | Count |
---|---|
95 | |
11 | |
11 | |
6 | |
6 | |
4 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.