首页 > 解决方案 > 对依赖于另一列值 SQL 的列进行条件排序

问题描述

我在一家银行工作,我正在尝试为我们的一些交易编写查询,每笔交易都作为交易金额 (TXN_AMOUNT_BASE) 输入,如果它是贷方或借方 (CREDIT_DEBIT_CODE),则稍后在另一列中标识。

长期目标是获得一个查询,告诉您每个客户的贷方与借方的比率。

直接目标是将金额简单地分成贷方列或借方列。这是我到目前为止所拥有的:

SELECT 
    PRIMARY_CUST_SRCE_REF_ID,
    TXN_AMOUNT_BASE,
FROM 
    IDP_INTERFACE.V_L3_HPT_TRANSACTIONS
WHERE 
    CREDIT_DEBIT_CODE = 'C' AS Credit
    AND CREDIT_DEBIT_CODE = 'D' AS Debit
GROUP BY 
    (PRIMARY_CUST_SRCE_REF_ID, TXN_AMOUNT_BASE, CREDIT_DEBIT_CODE)

我知道我在 WHERE C_D_CODE AS 段上错了,但我不知道从哪里开始纠正它。

谢谢

标签: sql

解决方案


我认为你想要条件聚合:

SELECT PRIMARY_CUST_SRCE_REF_ID,
       SUM(CASE WHEN CREDIT_DEBIT_CODE = 'C' THEN TXN_AMOUNT_BASE ELSE 0 END) AS Credit,
       SUM(CASE WHEN CREDIT_DEBIT_CODE = 'D' THEN TXN_AMOUNT_BASE ELSE 0 END) AS Debit
FROM IDP_INTERFACE.V_L3_HPT_TRANSACTIONS
WHERE CREDIT_DEBIT_CODE IN ('C', 'D')
GROUP BY PRIMARY_CUST_SRCE_REF_ID;

这将为您提供每个客户参考的贷方和借方的总和。如果你想要比率,然后除以值。


推荐阅读