我正在运行查询
选择
YEAR(TL_SYS_DATE) AS [YEAR]
,MONTH(TL_SYS_DATE) AS [MONTH]
,NEW_PRODUCT_NAME AS [PRODUCT]
,COMP_PDT_CODE AS PROD_CODE
,NEW_CONTRACT_NO
,NEW_STATUS
,PREMIUM_AMT
,COUNT(DISTINCT CASE WHEN TERM_LENGTH = '10 Year' AND NEW_STATUS IN ('Active/Restrict','Active') THEN
NEW_CONTRACT_NO
END) AS [10 YR CONTRACTS]
,SUM(CASE WHEN TERM_LENGTH = '10 Year' AND NEW_STATUS IN ('Active/Restrict','Active') THEN
PREMIUM_AMT
END) AS [10 YR Premium]
,SUM(CASE WHEN NEW_STATUS IN ('Surr/Freelook', 'Terminated/Surr','Withdrawn') THEN
SURRENDER_VALUE
END) AS [Surr/Term/Withdrawn Amount]
,SUM(CASE WHEN NEW_STATUS NOT IN ('Surr/Freelook', 'Terminated/Surr','Withdrawn') THEN
ACCOUNT_VALUE
END) AS [ACCOUNT VALUE]
-- NEW_STATUS NOT IN ('Surr/Freelook', 'Terminated/Surr','Withdrawn') AND TERM_LENGTH != '10 Year'
,COUNT(DISTINCT CASE WHEN UPPER(NEW_STATUS) = 'CLAIM' THEN
NEW_CONTRACT_NO
END) AS [Death Claim Contracts]
FROM
DB1
where YEAR(TL_SYS_DATE) = '2014'
and MONTH(TL_SYS_DATE) = '4'
AND PREMIUM_AMT > 0
GROUP BY
YEAR(TL_SYS_DATE)
,MONTH(TL_SYS_DATE)
,NEW_PRODUCT_NAME
,ACCOUNT_VALUE
,COMP_PDT_CODE
,NEW_CONTRACT_NO
,NEW_STATUS
,PREMIUM_AMT
导致
我想要做的是总结PREMIUM_AMT而不是ACCOUNT_VALUE
因此,对于合约6880000153,它将是PREMIUM_AMT = 110500.00和ACCOUNT VALUE 105306.07全部在一行。
答案 0 :(得分:1)
您可以将结果包装在CTE中并从那里汇总
WITH CTE_Example
AS
(
your query
)
SELECT MAX(YEAR),
MAX(MONTH),
NEW_CONTRACT_NO,
MAX(NEW_STATUS),
SUM(PREMIUM_AMT),
MAX([ACCOUNT VALUE]),
MAX([Death Claim Contracts])
FROM CTE_Example
GROUP BY NEW_CONTRACT_NO
所以有些免责声明,这会聚合并产生你想要的结果。但我真的对使用MAX(NEW_STATUS)而不知道你的整个数据方案持怀疑态度。因为如果6880000153具有Claim和Suspended的组合,它将始终产生Suspended,因为它按字母顺序更大,可能不是您需要的。此外,我没有将列[10 YR Premium]和[Surr / Term / Withdrawn Amount]放入,因为它们是NULL。但随意添加它们并适当地聚合。