我正在使用 MS SQL Report Builder 3.0 为 SQL Reporting Services 生成报告。我有一个数据集,其中包括 AppointmentDate、PatientID 和 InsuranceCarrier 列。我想找出在特定时间范围内访问的 DISTINCT 患者的数量(从 AppointmentDate 开始到 AppointmentDate 结束)。患者在查询中出现多次的唯一情况是他们是否有不同的保险公司进行重复访问。
如果我执行以下查询:
SELECT DISTINCT AppointmentDate, PaientID, InsuranceCarrier
FROM Encounters
WHERE AppointmentDate >= @beginningofdaterange
AND AppointmentDate <= @endofdaterange
然后我得到在该日期范围内访问的每个患者和保险公司的列表。不幸的是,由于每个 AppointmentDate 也是不同的,因此对于每个单独的约会日期,Patients 都会重复。例如,如果患者 X 在指定的时间范围内出现两次,它将显示两个约会。
如果我从 SELECT 语句中删除 AppointmentDate,那么在 Report Builder 3.0 的数据集属性下,我将无法再根据 AppointmentDate 表达式进行筛选。我可以直接在 T-SQL 语句的 WHERE 子句中进行过滤,但这意味着我不能使用用户输入的运行时报告参数。这是一个问题,因为我根据用户在运行报告时选择的报告参数进行过滤。他们输入开始的 AppointmentDate 和“18 个月前”参数计算为要过滤的开始和结束 AppointmentDates。
那么如何包含 AppointmentDate 以便我可以使用它进行过滤,但不将其包含在我的 DISTINCT SELECT 中,以便它正确区分我的数据。