我按提供者分组,然后按患者 ID 分组,我想找到患者最后一次与诊所"互动"的时间,但是当我使用 datediff 时,它似乎为整个数据集而不是按组使用最新日期。
我的尝试如下:
@TimeSinceLastInteraction_Initialize
global numbervar interaction := 0;
if {Ticket.PatientID} <> previous({Ticket.PatientID}) then interaction
else interaction :=0;
此公式放置在患者ID的组标题中,以便重置每个组的值,并且似乎正在工作
@TimeSinceLastInteraction
global numbervar interaction;
interaction := DateDiff("d",maximum({Ticket.TicketDate}),CurrentDateTime);
我尝试了几个不同的日期字段,但我总是得到相同的、不希望的结果,其中每个分组返回的值是相同的。这让我觉得我没有正确地将交互设置为变量。我也尝试过局部变量与全局变量,但无济于事。
作为一个小小的旁注,我并不真正了解局部变量声明和全局变量声明之间的区别(我通常只使用全局),并且希望对它们各自的用途进行解释,就像对我当前问题的任何帮助一样!
提前感谢!
首先,局部变量只能在声明它的一个公式中使用。不能在其公式之外的任何位置引用它。全局变量可以由任何公式引用(子报表中的公式除外)。
在您的情况下,您根本不需要使用任何变量,您实际上只需要一个公式即可完成工作:
DateDiff("d",maximum({Ticket.TicketDate},{Ticket.PatientID}),CurrentDateTime)
键是传递给Maximum()
函数的第二个参数;它指定你只查找该特定 PatientID 的最大日期。如果没有第二个参数,它将为您提供整个报告的最大日期。但是,您应该注意,作为第二个参数传递的值必须是您在报表中用作组的字段。