这似乎是我经常遇到的一个问题,但我还没有弄清楚(我不是 dba)。我正在为我正在创建的报告运行查询,但是用户不希望为相同的“案例编号”显示任何重复的行。
我已经尝试过“选择不同”和“分组依据”,但都没有显示我希望它们显示的结果。
问题是报告查询的列可以有 2 个不同的可能值,我们只想显示匹配其中任何一个值的案例,但我们不想显示特定案例超过 1 次。
这是查询:
SELECT cases.casenum,
sp_first_party(cases.casenum),
cases.matcode,
cases.open_status,
cases.date_opened,
cases.close_date
FROM cases,
insurance
WHERE (cases.casenum = insurance.case_num)
AND cases.date_opened >= :start
AND cases.date_opened <= :end
AND ( insurance.policy_type = 'Liability'
OR insurance.policy_type = 'SUM')
AND insurance.date_settled is Null
AND ( cases.matcode like 'GPI'
OR cases.matcode like 'MVA'
OR cases.matcode like 'S&F')
AND cases.close_date is not NULL
这就是我认为的问题区域:
(insurance.policy_type = 'Liability' OR insurance.policy_type = 'SUM')
一个“案例”/“案例编号”可以有多种保险单类型……这意味着它们可以有责任或总和,或两者兼而有之。报告的输出会为出现的这些保险类型中的任何一种的每个实例显示一个新行。
我们希望每个案例仅显示一行,无论为案例分配了多少/哪些保险单类型......但仍然只显示符合该标准的案例。
我试过选择不同的,以及按cases.casenum分组,我在这里做错了什么?
感谢您的阅读!
PS-这是针对 cms 平台/应用程序的,但它在 t-sql 上运行(与 mssql 语法相同)。
这是输出示例 - 正如您在最左侧的列中看到的那样,“案例编号”列有多个相同的值。这是因为符合条件的案例编号有多个不同的 insurance.policy_type。虽然我们仍然需要按这些策略类型进行过滤,但我们不希望为每个类型看到额外的行。
您不必使用
MIN
,只需该ROW_NUMBER
行即可让您为每个案例编号选择一行。如果没有数据模型,我无法测试以下查询: