ORACLE SQL,我不知道如何使用 SUM() 在这里



TRANSACTION:

tbody> <<tr> 5 20 10 5 20
TRANS_VALUE USER ID TRANS_TYPE_ID
10 1 2
2 1
15 1 1
2 2
1 2
1 2
15 3 1
3 1

使用条件聚合:

SELECT user_id,
       SUM(CASE trans_type_id WHEN 1 THEN trans_value END) AS sum_trans_type_1,
       SUM(CASE trans_type_id WHEN 2 THEN trans_value END) AS sum_trans_type_2
FROM   transaction
GROUP BY user_id

PIVOT:

SELECT *
FROM   transaction
PIVOT (
  SUM(trans_value)
  FOR trans_type_id IN (
    1 AS sum_trans_type_1,
    2 AS sum_trans_type_2
  )
)

对于样本数据:

CREATE TABLE transaction (TRANS_VALUE, USER_ID, TRANS_TYPE_ID) AS
SELECT 10, 1, 2 FROM DUAL UNION ALL
SELECT  5, 2, 1 FROM DUAL UNION ALL
SELECT 15, 1, 1 FROM DUAL UNION ALL
SELECT 20, 2, 2 FROM DUAL UNION ALL
SELECT 10, 1, 2 FROM DUAL UNION ALL
SELECT  5, 1, 2 FROM DUAL UNION ALL
SELECT 15, 3, 1 FROM DUAL UNION ALL
SELECT 20, 3, 1 FROM DUAL;

两输出:

SUM_TRANS_TYPE_2

相关内容

最新更新