【发布时间】:2021-02-01 10:46:59
【问题描述】:
我有一张这样的桌子
| CUSTOMER_ID | ALIAS_ID | ULTIMATE_NAME | MODEL_SUB_TYPE | OLD_PD | OLD_EXP | OLD_ECAP | RATING |
|---|---|---|---|---|---|---|---|
| Client A | 123 | Company A | CI_COM_KN | 1 | 1 | 1 | BB+ |
| Client A | 123 | Company A | CI_POL_KN | 0.5 | 1 | 1 | null |
| Client A | 456 | Company B | CI_COM_KN | 1 | 1 | 3 | BB+ |
| Client A | 456 | Company B | CI_POL_KN | 0.5 | 1 | 3 | null |
我需要我的查询做的是在MODEL_SUB_TYPE = Sub_type B 时忽略OLD_PD、OLD_EXP 和RATING 列中的值,并聚合(求和)OLD_ECAP 列而不考虑MODEL_SUB_TYPE。
到目前为止,我所拥有的是:
SELECT
CUSTOMER_ID,
ALIAS_ID,
SUBSTR(ULTIMATE_NAME, 0, 70) as ULTIMATE_NAME,
MODEL_SUB_TYPE,
CASE
WHEN MODEL_SUB_TYPE LIKE 'CI_COM_%' THEN ULTIMATE_POD
END AS OLD_PD,
SUM(
CASE
WHEN MODEL_SUB_TYPE LIKE 'CI_COM_%' THEN CREDIT_LIMIT_NET_EXPOSURE
END
) AS OLD_EXP,
SUM(EC_CONSUMPTION_ND) AS OLD_ECAP,
ULTIMATE_RATING AS RATING
FROM
CALC6619.SO_REPORTING -- OLD QUARTER --
WHERE
MODEL_TYPE LIKE 'IR'
AND MODEL_SUB_TYPE LIKE 'CI_%'
AND CUSTOMER_ID = '09781C1 01' -- Customer ID
GROUP BY
CUSTOMER_ID,
ALIAS_ID,
ULTIMATE_NAME,
MODEL_SUB_TYPE,
ULTIMATE_POD,
ULTIMATE_RATING
我想要是我的查询返回这样的表(基于上面的表):
| CUSTOMER_ID | ALIAS_ID | ULTIMATE_NAME | MODEL_SUB_TYPE | OLD_PD | OLD_EXP | OLD_ECAP | RATING |
|---|---|---|---|---|---|---|---|
| Client A | 123 | Company A | CI_COM_KN | 1 | 1 | 2 | BB+ |
| Client A | 456 | Company B | CI_COM_KN | 1 | 1 | 6 | BB+ |
但它实际上返回了一个类似于第一个表的表,但它应该是空值,但没有按公司 ID 对行进行分组,如下所示:
| CUSTOMER_ID | ALIAS_ID | ULTIMATE_NAME | MODEL_SUB_TYPE | OLD_PD | OLD_EXP | OLD_ECAP | RATING |
|---|---|---|---|---|---|---|---|
| Client A | 123 | Company A | CI_COM_KN | 1 | 1 | 1 | BB+ |
| Client A | 123 | Company A | CI_POL_KN | null | null | 1 | null |
| Client A | 456 | Company B | CI_COM_KN | 1 | 1 | 3 | BB+ |
| Client A | 456 | Company B | CI_POL_KN | null | null | 3 | null |
【问题讨论】:
-
您的查询和样本数据不匹配,不容易相互映射。请提供您用于获取此处显示的数据作为示例数据的确切查询
-
很抱歉。刚刚更新了查询,我必须完全匹配上面的表格