我有以下查询,使我获得至少具有两行COVERAGE_ELECT = 'E'
且计划类型为49的EMPLID。
WITH Coverage_CTE (EMPLID, COVERAGE_ELECT)
AS
(
SELECT EMPLID, COUNT(COVERAGE_ELECT)
FROM PS_SAVINGS_PLAN
WHERE COVERAGE_ELECT = 'E'
AND PLAN_TYPE = '49'
GROUP BY EMPLID
HAVING COUNT(COVERAGE_ELECT) > 1
)
, Emp_CTE (EMPLID)
AS
(
select distinct EMPLID from Coverage_CTE
)
SELECT SP.EMPLID, SP.PLAN_TYPE, SP.EFFDT, SP.COVERAGE_ELECT, SP.SAVINGS_COVRG, SP.FLAT_DED_AMT, SP.PCT_GROSS
FROM PS_SAVINGS_PLAN as SP
WHERE SP.EMPLID IN (Select EMPLID from Emp_CTE)
AND SP.COVERAGE_ELECT = 'E'
AND PLAN_TYPE = '49'
这似乎很好用,但是我想进一步过滤结果,方法是仅包括行中没有有效日期大于'E的最大值EMPLID
的EFFDT
行上面选择的行是W]或'T'。
上面的查询当前有EMPLID
5423H的行(因为您看到的这个人有多于1个COVERAGE_ELECT = 'E'
行(3))。但是,您看到此人有两行,其中COVERAGE_ELECT
等于T和W,并且EFFDT
大于最大EFFDT
'E'行的生效日期(2018-10-01)。
EMPLID PLAN_TYPE EFFDT COVERAGE_ELECT 5423H 49 2013-01-01 W 5423H 49 2015-10-02 E 5423H 49 2015-10-09 T 5423H 49 2016-09-29 E 5423H 49 2018-10-01 E 5423H 49 2018-10-07 T 5423H 49 2018-11-14 W
因此您将在此示例中看到两种情况-1。此EMPLID的'T'行大于(2018-10-07)最大EFFDT'E'行(2018-10-01)和2他们的'W'行大于(2018-11-14)最大EFFDT'E'行。如果以上任何一种情况都成立,那么我不希望它们导致上述查询。我正在寻找在上面的查询中构建此附加逻辑。我希望这是有道理的。
[我有以下查询,使我的EMPLID至少具有两行,且COVERAGE_ELECT ='E',并且计划类型为49。WITH Coverage_CTE(EMPLID,COVERAGE_ELECT)AS(SELECT EMPLID,COUNT(...
所有未经测试
我将更改您的CTE以包括最大effdt,为最大WT EFFDATE添加另一个CTE,然后选择自己喜欢的方法以将另一个排除。根据您的叙述,可以根据简单的[[条件汇总