gpt4 book ai didi

tsql - SQL Reporting Services,过滤不在 DISTINCT SELECT 语句中的字段?

转载 作者:行者123 更新时间:2023-12-04 02:48:14 26 4
gpt4 key购买 nike

我正在使用 MS SQL Report Builder 3.0 为 SQL Reporting Services 生成报告。我有一个包含 AppointmentDate、PatientID 和 InsuranceCarrier 列的数据集。我想找出在特定时间范围内(从约会日期开始到约会日期结束)访问过的 DISTINCT 患者的数量。患者应该在查询中出现不止一次的唯一时间是他们在重复访问时是否有不同的保险公司。

如果我执行以下查询:

SELECT DISTINCT AppointmentDate, PaientID, InsuranceCarrier 
FROM Encounters
WHERE AppointmentDate >= @beginningofdaterange
AND AppointmentDate <= @endofdaterange

然后我会得到在该日期范围内访问过的每个患者和保险公司的列表。不幸的是,由于每个约会日期也是不同的,因此患者在每个单独的约会日期都会重复。例如,如果患者 X 在指定的时间范围内出现两次,它将显示两个约会。

如果我从 SELECT 语句中删除 AppointmentDate,则在 Report Builder 3.0 中的数据集属性下,我将无法再根据 AppointmentDate 表达式进行过滤。我可以直接在 T-SQL 语句的 WHERE 子句中进行过滤,但这意味着我不能使用用户输入的运行时报告参数。这是一个问题,因为我根据用户在运行报告时选择的报告参数进行过滤。他们输入起始约会日期,并计算“18 个月之前”参数作为筛选的开始和结束约会日期。

那么我如何包含 AppointmentDate 以便我可以使用它进行过滤,但不将它包含在我的 DISTINCT SELECT 中,以便它正确地区分我的数据。

最佳答案

@FreefallGeek,

如果从 SELECT 中删除它,则不能过滤 AppointmentDate 是什么意思?报表生成器允许您在运行时根据用户分配的参数进行数据集过滤,查询如下,

SELECT DISTINCT PaientID, InsuranceCarrier 
FROM Encounters
WHERE
AppointmentDate >= @beginningofdaterange
AND AppointmentDate <= @endofdaterange

使用 @beginningofdaterange 和 @endofdaterange 作为您的报告参数。这应该可以工作,除非您需要执行需要返回 AppointmentDate 作为结果的额外过滤。

如果您确实需要返回约会日期作为结果或进行额外过滤,那么下一个问题是,当同一患者和保险公司多次就诊时,约会日期应该是多少?日期范围内的第一次访问还是最后一次访问?如果是这种情况,您可以像这样使用 group by 进行首次访问,
SELECT Min(AppointmentDate) AS FirstAppointmentDate, PaientID, InsuranceCarrier 
FROM Encounters
WHERE
AppointmentDate >= @beginningofdaterange
AND AppointmentDate <= @endofdaterange
GROUP BY PaientID, InsuranceCarrier
ORDER BY AppointmentDate

但是,根据您的描述,您似乎只需要能够过滤日期的不同患者和保险公司。如果这种理解是正确的,您可以在没有 SELECT 的 WHERE 子句中使用用户输入参数过滤约会。

关于tsql - SQL Reporting Services,过滤不在 DISTINCT SELECT 语句中的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17296085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com