【发布时间】:2016-11-14 17:13:51
【问题描述】:
一个Policy Number 可以有多个不同的ClassCode 并且只有一个Premium 的总量。在我的 SSRS 报告中,我希望能够创建参数 ClassCode,并且如果我排除(取消选中)其中至少一个 ClassCode,则需要不在计算中包含保费的整个保单编号。
可以说,如果我想排除 ClassCode 58,那么 1,644.00 的 Premium 不应该出现在我的报告结果中。
我试图在我的查询AND ClassCode <> 58 中说,但它只排除了一行并保留了高级注释。但我的目标是排除所有具有 ClassCode 58 的内容。
SELECT policynumber,
classcode,
/*
Using ROW_NUMBER() to check if it's the first record in the join and returns the Premium value if so, otherwise it will display 0.
The ORDER BY (SELECT 0) is there just because I don't need the row number to be based on any explicit order.
*/
CASE
WHEN ROW_NUMBER()
OVER (
PARTITION BY cte1.policynumber
ORDER BY (SELECT 0)) = 1 THEN premium
ELSE 0
END AS Premium,
c.yearnum TransEffYearNum,
c.monthnum TransEffMonthNum
FROM cte1
INNER JOIN cte2
ON cte1.policynumber = cte2.policynumber
RIGHT JOIN tblcalendar c
ON c.yearnum = Year(cte1.policyeffectivedate)
AND c.monthnum = Month(cte1.policyeffectivedate)
WHERE c.yearnum = 2016
AND classcode <> 58
【问题讨论】:
-
ClassCode属于什么表?
-
ClassCode 在我的查询中属于
cte2。我只在这里显示最终的SELECT声明。导致相当长的查询。 -
那么,对于您的问题示例,您想完全消除 Policy 3 还是只想将 ClassCode 57 的 Premium 变为 0?
-
如果我消除 ClassCode 58,我想消除
1,644.00的溢价。所以是的,我想消除与Policy 3相关的整数
标签: sql-server tsql reporting-services